From 3090ed6f6ff02c215360da580e2fbe8a453bcc0f Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期二, 27 八月 2024 16:19:47 +0800 Subject: [PATCH] update --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java | 144 +++++++++++++++++++++++++++++++++-------------- 1 files changed, 101 insertions(+), 43 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 fd31e8c..eb40058 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 @@ -1,10 +1,12 @@ package cn.lihu.jh.module.ecg.service.queue; +import cn.lihu.jh.framework.common.exception.ErrorCode; import cn.lihu.jh.module.ecg.dal.dataobject.queue.BedQueueStatisticDO; import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueStatisticDO; import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO; import cn.lihu.jh.module.ecg.dal.mysql.room.RoomMapper; import cn.lihu.jh.module.ecg.enums.BedStatusEnum; +import cn.lihu.jh.module.ecg.enums.ErrorCodeConstants; import cn.lihu.jh.module.ecg.enums.QueueStatusEnum; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -22,6 +24,7 @@ import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; +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.module.ecg.enums.ErrorCodeConstants.*; @@ -77,11 +80,11 @@ } @Override - public Integer startBedOpen(Long roomId, String bedNo) { - Future<Integer> future = singleThreadExecutor.submit( new BedOpenCallable(this, roomId, bedNo)); + public ErrorCode startBedOpen(Long roomId, String bedNo) { + Future<ErrorCode> future = singleThreadExecutor.submit( new BedOpenCallable(this, roomId, bedNo)); try { - Integer ret = future.get(); + ErrorCode ret = future.get(); return ret; } catch (InterruptedException e) { e.printStackTrace(); @@ -89,15 +92,15 @@ e.printStackTrace(); } - return 100; + return ECG_INNER_ERROR; } @Override - public Integer startBedClose(Long roomId, String bedNo) { - Future<Integer> future = singleThreadExecutor.submit( new BedCloseCallable(this, roomId, bedNo)); + public ErrorCode startBedClose(Long roomId, String bedNo) { + Future<ErrorCode> future = singleThreadExecutor.submit( new BedCloseCallable(this, roomId, bedNo)); try { - Integer ret = future.get(); + ErrorCode ret = future.get(); return ret; } catch (InterruptedException e) { e.printStackTrace(); @@ -105,17 +108,17 @@ e.printStackTrace(); } - return 100; + return ECG_INNER_ERROR; } @Override - public Integer startBedDoctorPause(Long roomId, String bedNo, Long docId, String docName) { - Future<Integer> future = singleThreadExecutor.submit( + public ErrorCode startBedDoctorPause(Long roomId, String bedNo, Long docId, String docName) { + Future<ErrorCode> future = singleThreadExecutor.submit( new BedDoctorPauseCallable(this, roomId, bedNo, docId, docName) ); try { - Integer ret = future.get(); + ErrorCode ret = future.get(); return ret; } catch (InterruptedException e) { e.printStackTrace(); @@ -123,17 +126,35 @@ e.printStackTrace(); } - return 100; + return ECG_INNER_ERROR; } @Override - public Integer startBedDoctorOn(Long roomId, String bedNo, Long docId, String docName) { - Future<Integer> future = singleThreadExecutor.submit( + 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) ); try { - Integer ret = future.get(); + ErrorCode ret = future.get(); return ret; } catch (InterruptedException e) { e.printStackTrace(); @@ -141,17 +162,17 @@ e.printStackTrace(); } - return 100; + return ECG_INNER_ERROR; } @Override - public Integer startBedDoctorOff(Long roomId, String bedNo, Long docId, String docName) { - Future<Integer> future = singleThreadExecutor.submit( + public ErrorCode startBedDoctorOff(Long roomId, String bedNo, Long docId, String docName) { + Future<ErrorCode> future = singleThreadExecutor.submit( new BedDoctorOffCallable(this, roomId, bedNo, docId, docName) ); try { - Integer ret = future.get(); + ErrorCode ret = future.get(); return ret; } catch (InterruptedException e) { e.printStackTrace(); @@ -159,7 +180,7 @@ e.printStackTrace(); } - return 100; + return ECG_INNER_ERROR; } @@ -170,15 +191,14 @@ * @return */ @Override - public Integer bedOpen(Long roomId, String bedNo) { + public ErrorCode bedOpen(Long roomId, String bedNo) { // 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 ) - return 310; + return ROOM_INVALID_STATUS; List<Byte> queueStatusList = new ArrayList<>(); queueStatusList.add(QueueStatusEnum.READY.getStatus()); @@ -190,35 +210,45 @@ 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 0; + return SUCCESS; } @Override - public Integer bedClose(Long roomId, String bedNo) { + public ErrorCode bedClose(Long roomId, String bedNo) { BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); if (null == bedQueueBO) - return 320; + 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 321; + return ROOM_INVALID_STATUS; - return 0; + return SUCCESS; } @Override - public Integer bedDoctorPause(Long roomId, String bedNo, Long docId, String docName) { + 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 320; + return QUEUE_BED_ABNORMAL; + + bedQueueBO.setStatusEnum(BedStatusEnum.PAUSE); + priorityQueue.remove(bedQueueBO); // DB update List statusList = new ArrayList<BedStatusEnum>(); @@ -226,16 +256,36 @@ Integer updateNum = roomMapper.setBedDoctorPause(roomId, bedNo, docId, docName, BedStatusEnum.PAUSE, statusList); if ( null==updateNum || 0 == updateNum ) - return 331; + return ROOM_INVALID_STATUS; - return 0; + return SUCCESS; } @Override - public Integer bedDoctorOn(Long roomId, String bedNo, Long docId, String docName) { + 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 320; + return QUEUE_BED_ABNORMAL; + + bedQueueBO.setStatusEnum(BedStatusEnum.DOCTOR_ON); + priorityQueue.offer(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 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; // DB update List statusList = new ArrayList<BedStatusEnum>(); @@ -243,16 +293,18 @@ Integer updateNum = roomMapper.setBedDoctorOn(roomId, bedNo, docId, docName, BedStatusEnum.DOCTOR_ON, statusList); if ( null==updateNum || 0 == updateNum ) - return 341; + return ROOM_INVALID_STATUS; - return 0; + bedQueueBO.setStatusEnum(BedStatusEnum.DOCTOR_ON); + + return SUCCESS; } @Override - public Integer bedDoctorOff(Long roomId, String bedNo, Long docId, String docName) { + 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 320; + return QUEUE_BED_ABNORMAL; // DB update List statusList = new ArrayList<BedStatusEnum>(); @@ -260,9 +312,11 @@ Integer updateNum = roomMapper.setBedDoctorOff(roomId, bedNo, docId, docName, BedStatusEnum.OPENING, statusList); if ( null==updateNum || 0 == updateNum ) - return 351; + return ROOM_INVALID_STATUS; - return 0; + bedQueueBO.setStatusEnum(BedStatusEnum.OPENING); + + return SUCCESS; } private void validatequeueExists(Integer id) { @@ -291,7 +345,11 @@ mapBedVsQueue.clear(); // 浠嶥B 鑾峰彇 宸ヤ綅鍒楄〃 - 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(); // 浠嶥B 鑾峰彇 闃熷垪涓� 灏辫瘖鍑嗗涓汉鍛樼粺璁� 鍒楄〃 -- Gitblit v1.9.3