From 9b18e467d407c66ecc3c46a197aca45dcc3f8056 Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期二, 27 八月 2024 09:11:02 +0800 Subject: [PATCH] update --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedQueueBO.java | 1 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorPauseCallable.java | 27 +++ jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorOnCallable.java | 27 +++ sql/mysql/jh.sql | 29 +- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedCloseCallable.java | 23 ++ jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java | 82 ++++++++ jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java | 1 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java | 198 +++++++++++++++++++-- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java | 44 ++++ jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/BedStatusEnum.java | 12 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorOffCallable.java | 27 +++ jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/vo/RoomRespVO.java | 6 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomDO.java | 10 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java | 14 + jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedOpenCallable.java | 36 ++++ 15 files changed, 484 insertions(+), 53 deletions(-) diff --git a/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/BedStatusEnum.java b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/BedStatusEnum.java index 47a256d..df87e00 100644 --- a/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/BedStatusEnum.java +++ b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/BedStatusEnum.java @@ -14,18 +14,18 @@ @Getter @AllArgsConstructor public enum BedStatusEnum implements IntArrayValuable { - CLOSED((byte)0, "宸插叧闂�"), - CLOSING((byte)1, "鍏抽棴涓�"), - OPENING((byte)10, "宸插紑閫�"), - DOCTOR_ON((byte)20, "鏈夊尰鐢�"), - PAUSE((byte)30, "鏆傚仠"); + CLOSED(0, "宸插叧闂�"), + CLOSING(1, "鍏抽棴涓�"), + OPENING(10, "宸插紑閫�"), + DOCTOR_ON(20, "鏈夊尰鐢�"), + PAUSE(30, "鏆傚仠"); public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(BedStatusEnum::getStatus).toArray(); /** * 鐘舵�佸�� */ - private final Byte status; + private final Integer status; /** * 鐘舵�佸悕 */ diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java index 3174a56..f9eab4e 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java @@ -1,6 +1,7 @@ package cn.lihu.jh.module.ecg.controller.admin.queue; import cn.lihu.jh.framework.common.exception.ErrorCode; +import cn.lihu.jh.framework.security.core.util.SecurityFrameworkUtils; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.springframework.security.access.prepost.PreAuthorize; @@ -95,16 +96,85 @@ BeanUtils.toBean(list, QueueRespVO.class)); } - @GetMapping("/bed-control") - @Operation(summary = "宸ヤ綅鎺у埗") + @GetMapping("/bed-open") + @Operation(summary = "宸ヤ綅寮�閫�") @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") - public CommonResult<Integer> bedControl( + public CommonResult<Integer> bedOpen( + @RequestParam("roomId") Long roomId, + @RequestParam("bedNo") String bedNo) + { + Integer result = queueService.startBedOpen(roomId, bedNo); + if (null == result || 0 == result) + return success(0); + + return error(new ErrorCode(result, "鍑洪敊浜�")); + } + + @GetMapping("/bed-close") + @Operation(summary = "宸ヤ綅鍏抽棴") + @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") + public CommonResult<Integer> bedClose( + @RequestParam("roomId") Long roomId, + @RequestParam("bedNo") String bedNo) + { + Integer result = queueService.startBedClose(roomId, bedNo); + if (null == result || 0 == result) + return success(0); + + return error(new ErrorCode(result, "鍑洪敊浜�")); + } + + @GetMapping("/bed-doctor-pause") + @Operation(summary = "鍖荤敓鏆傚仠") + @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") + public CommonResult<Integer> bedPause( @RequestParam("roomId") Long roomId, @RequestParam("bedNo") String bedNo, - @RequestParam("status") Integer status) + @RequestParam("docId") Long docId, + @RequestParam("docName") String docName) { - queueService.bedControl(roomId, bedNo, status); - return success(0); + Long userId = SecurityFrameworkUtils.getLoginUserId(); + String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); + + Integer result = queueService.startBedDoctorPause(roomId, bedNo, userId, userNickname); + if (null == result || 0 == result) + return success(0); + + return error(new ErrorCode(result, "鍑洪敊浜�")); + } + + @GetMapping("/bed-doctor-on") + @Operation(summary = "鍖荤敓鍏ュ骇") + @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") + public CommonResult<Integer> bedDoctorOn( + @RequestParam("roomId") Long roomId, + @RequestParam("bedNo") String bedNo) + { + Long userId = SecurityFrameworkUtils.getLoginUserId(); + String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); + + Integer result = queueService.startBedDoctorOn(roomId, bedNo, userId, userNickname); + if (null == result || 0 == result) + return success(0); + + return error(new ErrorCode(result, "鍑洪敊浜�")); + } + + @GetMapping("/bed-doctor-off") + @Operation(summary = "鍖荤敓绂诲骇") + @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") + public CommonResult<Integer> bedDoctorOff( + @RequestParam("roomId") Long roomId, + @RequestParam("bedNo") String bedNo) + { + Long userId = SecurityFrameworkUtils.getLoginUserId(); + String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); + + Integer result = queueService.startBedDoctorOff(roomId, bedNo, userId, userNickname); + if (null == result || 0 == result) + return success(0); + + return error(new ErrorCode(result, "鍑洪敊浜�")); } @GetMapping("/startbiz") diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/vo/RoomRespVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/vo/RoomRespVO.java index a892bd4..17bb027 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/vo/RoomRespVO.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/vo/RoomRespVO.java @@ -33,8 +33,12 @@ private Integer status; @Schema(description = "鍖荤敓鍚�", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("鍖荤敓Id") + private Long docId; + + @Schema(description = "鍖荤敓鍚�", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("鍖荤敓鍚�") - private String doctorName; + private String docName; @Schema(description = "鍒涘缓鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("鍒涘缓鏃堕棿") 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 0fde66d..f8f139e 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 @@ -1,5 +1,6 @@ package cn.lihu.jh.module.ecg.dal.dataobject.room; +import cn.lihu.jh.module.ecg.enums.BedStatusEnum; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -41,11 +42,16 @@ private String bedNo; /** - * 璇婄枟搴婄姸鎬� 0:鍋滆瘖 10:寮�璇� 20:鏆傚仠 + * 璇婄枟搴婄姸鎬� + * @see BedStatusEnum */ private Integer status; /** + * 鍖荤敓ID + */ + private Long docId; + /** * 鍖荤敓鍚� */ - private String doctorName; + private String docName; } 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 0f0a194..f8e1851 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,9 @@ import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomPageReqVO; 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.enums.BedStatusEnum; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; @@ -32,9 +34,45 @@ @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, doctor_name FROM lihu.clinic_room where status > 0;" }) + @Select({ "SELECT id, room_id, room_name, bed_no, status, doc_id, doc_name FROM lihu.clinic_room where status >= 10;" }) List<RoomDO> simpleRoomList(); - @Update( "update lihu.clinic_room set status=#{status} where room_id=#{roomId} and bed_no=#{bedNo}" ) - Integer setBedStatus(Long roomId, String bedNo, Integer status); + @Update("<script> " + + "update lihu.clinic_room set status=#{newStatus.status} where room_id=#{roomId} and bed_no=#{bedNo} " + + "and status=( " + + " <foreach collection='curStatusList' separator=',' item='curStatus'>" + + " #{curStatus.status} " + + " </foreach> );" + + "</script>") + Integer setBedStatus(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("newStatus") BedStatusEnum newStatus, @Param("curStatusList") List<BedStatusEnum> curStatusList); + + @Update("<script> " + + "update lihu.clinic_room set status=#{newStatus.status} " + + "where room_id=#{roomId} and bed_no=#{bedNo} and doc_id=#{docId} and doc_name=#{docName}" + + "and status=( " + + " <foreach collection='curStatusList' separator=',' item='curStatus'>" + + " #{curStatus.status} " + + " </foreach> );" + + "</script>") + Integer setBedDoctorPause(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("docId")Long docId, @Param("docName")String docName, @Param("newStatus") BedStatusEnum newStatus, @Param("curStatusList") List<BedStatusEnum> curStatusList); + + @Update("<script> " + + "update lihu.clinic_room set status=#{newStatus.status}, doc_id=#{docId}, doc_name=#{docName} " + + "where room_id=#{roomId} and bed_no=#{bedNo} " + + "and status=( " + + " <foreach collection='curStatusList' separator=',' item='curStatus'>" + + " #{curStatus.status} " + + " </foreach> );" + + "</script>") + Integer setBedDoctorOn(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("docId")Long docId, @Param("docName")String docName, @Param("newStatus") BedStatusEnum newStatus, @Param("curStatusList") List<BedStatusEnum> curStatusList); + + @Update("<script> " + + "update lihu.clinic_room set status=#{newStatus.status}, doc_id=null, doc_name='' " + + "where room_id=#{roomId} and bed_no=#{bedNo} and doc_id=#{docId} and doc_name=#{docName}" + + "and status=( " + + " <foreach collection='curStatusList' separator=',' item='curStatus'>" + + " #{curStatus.status} " + + " </foreach> );" + + "</script>") + Integer setBedDoctorOff(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("docId")Long docId, @Param("docName")String docName, @Param("newStatus") BedStatusEnum newStatus, @Param("curStatusList") List<BedStatusEnum> curStatusList); } diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java index 3cd057a..0b1026a 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java @@ -27,6 +27,7 @@ System.out.println("搴旂敤鍚姩瀹屾垚锛岀郴缁熷垵濮嬨�傘�傘��"); String strOpenCloseTime = configApi.getConfigValueByKey(ECG_OPENING_TIME_KEY); + strOpenCloseTime = "0:00~23:59"; List<LocalTime> list = Utils.parseOpeningTime(strOpenCloseTime); LocalTime openingTime = list.get(0); LocalTime closeTime = list.get(1); diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedCloseCallable.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedCloseCallable.java new file mode 100644 index 0000000..fba487e --- /dev/null +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedCloseCallable.java @@ -0,0 +1,23 @@ +package cn.lihu.jh.module.ecg.service.queue; + +import java.util.concurrent.Callable; + +public class BedCloseCallable implements Callable<Integer> { + + QueueService queueService; + private Long roomId; + private String bedNo; + + public BedCloseCallable(QueueService queueService, Long roomId, String bedNo) + { + super(); + this.roomId = roomId; + this.bedNo = bedNo; + this.queueService = queueService; + } + + public Integer call() throws Exception { + return queueService.bedClose(roomId, bedNo); + } + +} diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorOffCallable.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorOffCallable.java new file mode 100644 index 0000000..6dfbabe --- /dev/null +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorOffCallable.java @@ -0,0 +1,27 @@ +package cn.lihu.jh.module.ecg.service.queue; + +import java.util.concurrent.Callable; + +public class BedDoctorOffCallable implements Callable<Integer> { + + QueueService queueService; + private Long roomId; + private String bedNo; + private Long docId; + private String docName; + + public BedDoctorOffCallable(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 Integer call() throws Exception { + return queueService.bedDoctorOff(roomId, bedNo, docId, docName); + } + +} diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorOnCallable.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorOnCallable.java new file mode 100644 index 0000000..bf36728 --- /dev/null +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorOnCallable.java @@ -0,0 +1,27 @@ +package cn.lihu.jh.module.ecg.service.queue; + +import java.util.concurrent.Callable; + +public class BedDoctorOnCallable implements Callable<Integer> { + + QueueService queueService; + private Long roomId; + private String bedNo; + private Long docId; + private String docName; + + public BedDoctorOnCallable(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 Integer call() throws Exception { + return queueService.bedDoctorOn(roomId, bedNo, docId, docName); + } + +} diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorPauseCallable.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorPauseCallable.java new file mode 100644 index 0000000..3db6221 --- /dev/null +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorPauseCallable.java @@ -0,0 +1,27 @@ +package cn.lihu.jh.module.ecg.service.queue; + +import java.util.concurrent.Callable; + +public class BedDoctorPauseCallable implements Callable<Integer> { + + QueueService queueService; + private Long roomId; + private String bedNo; + private Long docId; + private String docName; + + public BedDoctorPauseCallable(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 Integer call() throws Exception { + return queueService.bedDoctorPause(roomId, bedNo, docId, docName); + } + +} diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedOpenCallable.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedOpenCallable.java new file mode 100644 index 0000000..2096007 --- /dev/null +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedOpenCallable.java @@ -0,0 +1,36 @@ +package cn.lihu.jh.module.ecg.service.queue; + +import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO; +import cn.lihu.jh.module.ecg.dal.mysql.queue.queueMapper; +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.QueueStatusEnum; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.PriorityBlockingQueue; +import java.util.concurrent.atomic.AtomicInteger; + +import static cn.lihu.jh.module.ecg.service.queue.QueueService.MAX_QUEUE_NUM; + +public class BedOpenCallable implements Callable<Integer> { + + QueueService queueService; + private Long roomId; + private String bedNo; + + public BedOpenCallable(QueueService queueService, Long roomId, String bedNo) + { + super(); + this.roomId = roomId; + this.bedNo = bedNo; + this.queueService = queueService; + } + + public Integer call() throws Exception { + return queueService.bedOpen(roomId, bedNo); + } + +} diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedQueueBO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedQueueBO.java index ba361a5..67d71d6 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedQueueBO.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedQueueBO.java @@ -1,5 +1,6 @@ package cn.lihu.jh.module.ecg.service.queue; +import cn.lihu.jh.module.ecg.enums.BedStatusEnum; import lombok.Data; import org.jetbrains.annotations.NotNull; diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java index c342b25..518339f 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java @@ -14,6 +14,8 @@ */ public interface QueueService { + final static Integer MAX_QUEUE_NUM = 3; + void startBiz(); void closeBiz(); @@ -42,7 +44,17 @@ /** * */ - Integer bedControl(Long roomId, String bedNo, Integer status); + Integer startBedOpen(Long roomId, String bedNo); + Integer startBedClose(Long roomId, String bedNo); + Integer startBedDoctorPause(Long roomId, String bedNo, Long docId, String docName); + Integer startBedDoctorOn(Long roomId, String bedNo, Long docId, String docName); + Integer startBedDoctorOff(Long roomId, String bedNo, Long docId, String docName); + + Integer bedOpen(Long roomId, String bedNo); + Integer bedClose(Long roomId, String bedNo); + Integer bedDoctorPause(Long roomId, String bedNo, Long docId, String docName); + Integer bedDoctorOn(Long roomId, String bedNo, Long docId, String docName); + Integer bedDoctorOff(Long roomId, String bedNo, Long docId, String docName); /** * 鑾峰緱鎺掗槦 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 8a806d3..fd31e8c 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 @@ -4,6 +4,7 @@ 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.QueueStatusEnum; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -32,8 +33,6 @@ @Service @Validated public class QueueServiceImpl implements QueueService { - - final static Integer MAX_QUEUE_NUM = 3; @Resource private queueMapper queueMapper; @@ -78,28 +77,190 @@ } @Override - public Integer bedControl(Long roomId, String bedNo, Integer status) { - // 钀ヤ笟鏈熼棿涓嶈兘鍏抽棴宸ヤ綅 - if ( status == 0 && openingFlag.get() == 1 ) - return 301; + public Integer startBedOpen(Long roomId, String bedNo) { + Future<Integer> future = singleThreadExecutor.submit( new BedOpenCallable(this, roomId, bedNo)); - // 褰撳墠鐘舵�� - roomMapper.select + try { + Integer ret = future.get(); + return ret; + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + return 100; + } + + @Override + public Integer startBedClose(Long roomId, String bedNo) { + Future<Integer> future = singleThreadExecutor.submit( new BedCloseCallable(this, roomId, bedNo)); + + try { + Integer ret = future.get(); + return ret; + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + + return 100; + } + + @Override + public Integer startBedDoctorPause(Long roomId, String bedNo, Long docId, String docName) { + Future<Integer> future = singleThreadExecutor.submit( + new BedDoctorPauseCallable(this, roomId, bedNo, docId, docName) + ); + + try { + Integer ret = future.get(); + return ret; + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + + return 100; + } + + @Override + public Integer startBedDoctorOn(Long roomId, String bedNo, Long docId, String docName) { + Future<Integer> future = singleThreadExecutor.submit( + new BedDoctorOnCallable(this, roomId, bedNo, docId, docName) + ); + + try { + Integer ret = future.get(); + return ret; + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + + return 100; + } + + @Override + public Integer startBedDoctorOff(Long roomId, String bedNo, Long docId, String docName) { + Future<Integer> future = singleThreadExecutor.submit( + new BedDoctorOffCallable(this, roomId, bedNo, docId, docName) + ); + + try { + Integer ret = future.get(); + return ret; + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + + return 100; + } + + + /** + * 宸插叧闂� 鎴栬�� 鍏抽棴涓紝鍙互寮�閫氬伐浣� + * @param roomId + * @param bedNo + * @return + */ + @Override + public Integer bedOpen(Long roomId, String bedNo) { // DB update - Integer updateNum = roomMapper.setBedStatus(roomId, bedNo, status); + 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; - if ( status == 10 ) { - BedQueueBO bedQueueBO = new BedQueueBO(); - bedQueueBO.setRoomId(roomId); - bedQueueBO.setBedNo(bedNo); - bedQueueBO.setMaxQueueNum(MAX_QUEUE_NUM); - bedQueueBO.setQueueNum(new AtomicInteger(0)); - priorityQueue.offer(bedQueueBO); - mapBedVsQueue.put(String.format("%09d%s", bedQueueBO.roomId, bedQueueBO.bedNo), bedQueueBO); - } + List<Byte> queueStatusList = new ArrayList<>(); + queueStatusList.add(QueueStatusEnum.READY.getStatus()); + List<QueueDO> queueDOList = queueMapper.getDoctorQueueByStatus(roomId, bedNo, queueStatusList); + + // 鏂板宸ヤ綅 浼樺厛闃熷垪 + BedQueueBO bedQueueBO = new BedQueueBO(); + bedQueueBO.setRoomId(roomId); + bedQueueBO.setBedNo(bedNo); + bedQueueBO.setMaxQueueNum(MAX_QUEUE_NUM); + bedQueueBO.setQueueNum(new AtomicInteger(queueDOList.size())); + priorityQueue.offer(bedQueueBO); + mapBedVsQueue.put(String.format("%09d%s", roomId, bedNo), bedQueueBO); + return 0; + } + + @Override + public Integer bedClose(Long roomId, String bedNo) { + BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); + if (null == bedQueueBO) + return 320; + + // 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); + if ( null==updateNum || 0 == updateNum ) + return 321; + + return 0; + } + + @Override + public Integer bedDoctorPause(Long roomId, String bedNo, Long docId, String docName) { + BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); + if (null == bedQueueBO) + return 320; + + // 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 331; + + return 0; + } + + @Override + public Integer bedDoctorOn(Long roomId, String bedNo, Long docId, String docName) { + BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); + if (null == bedQueueBO) + return 320; + + // 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 ) + return 341; + + return 0; + } + + @Override + public Integer bedDoctorOff(Long roomId, String bedNo, Long docId, String docName) { + BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); + if (null == bedQueueBO) + return 320; + + // DB update + List statusList = new ArrayList<BedStatusEnum>(); + statusList.add(BedStatusEnum.DOCTOR_ON); + Integer updateNum = roomMapper.setBedDoctorOff(roomId, bedNo, docId, docName, + BedStatusEnum.OPENING, statusList); + if ( null==updateNum || 0 == updateNum ) + return 351; return 0; } @@ -341,4 +502,3 @@ } } - diff --git a/sql/mysql/jh.sql b/sql/mysql/jh.sql index 79a456c..70a6f3a 100644 --- a/sql/mysql/jh.sql +++ b/sql/mysql/jh.sql @@ -76,21 +76,20 @@ -- ---------------------------- DROP TABLE IF EXISTS `clinic_room`; CREATE TABLE `clinic_room` ( - `id` int NOT NULL AUTO_INCREMENT COMMENT 'id', - `room_id` BIGINT NOT NULL COMMENT '璇婂缂栧彿', - `room_name` varchar(10) NOT NULL COMMENT '璇婂鍚嶇О', - `bed_no` varchar(10) NOT NULL COMMENT '璇婄枟搴婄紪鍙�', - `status` int 0 COMMENT '0:鍋滆瘖 10:寮�璇� 20:鏆傚仠', - `doctor_name` varchar(10) NOT NULL COMMENT '鍖荤敓鍚嶇О', - `tenant_id` int DEFAULT 1 COMMENT '绉熸埛缂栧彿', - `creator` varchar(10) DEFAULT '' COMMENT '鍒涘缓鑰�', - `create_time` datetime NOT NULL COMMENT '鍒涘缓鏃堕棿', - `updater` varchar(10) DEFAULT '' COMMENT '鏇存柊鑰�', - `update_time` datetime NOT NULL COMMENT '鏇存柊鏃堕棿', - `deleted` bit(1) DEFAULT 0 COMMENT '鍒犻櫎鏍囪', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='璇婂鍜岃瘖鐤楀簥琛�'; - + `id` int NOT NULL AUTO_INCREMENT COMMENT 'id', + `room_id` bigint NOT NULL COMMENT '璇婂缂栧彿', + `room_name` varchar(10) NOT NULL COMMENT '璇婂鍚嶇О', + `bed_no` varchar(10) NOT NULL COMMENT '璇婄枟搴婄紪鍙�', + `status` int NOT NULL DEFAULT '0', + `doc_id` bigint DEFAULT NULL, + `doc_name` varchar(10) DEFAULT '', + `creator` varchar(10) DEFAULT '' COMMENT '鍒涘缓鑰�', + `create_time` datetime NOT NULL COMMENT '鍒涘缓鏃堕棿', + `updater` varchar(10) DEFAULT '' COMMENT '鏇存柊鑰�', + `update_time` datetime NOT NULL COMMENT '鏇存柊鏃堕棿', + `deleted` bit(1) DEFAULT b'0' COMMENT '鍒犻櫎鏍囪', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='璇婂鍜岃瘖鐤楀簥琛�'; -- ---------------------------- -- Table structure for device_model -- Gitblit v1.9.3