jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,52 @@ package cn.lihu.jh.module.ecg.enums; import cn.hutool.core.util.ObjUtil; import cn.lihu.jh.framework.common.core.IntArrayValuable; import lombok.AllArgsConstructor; import lombok.Getter; import java.util.Arrays; /** * éç¨ç¶ææä¸¾ * * @author èéæºç */ @Getter @AllArgsConstructor public enum QueueStatusEnum implements IntArrayValuable { //10:æéä¸ 20:åè¯åå¤ 30:å°±è¯ä¸ 40:å°±è¯å®æ 50:è¿å· 60:è¿æ WAITING((byte)10, "æéä¸"), READY((byte)20, "åè¯åå¤"), ONSTAGE((byte)30, "å°±è¯ä¸"), FINISH((byte)40, "å°±è¯å®æ"), PASSED((byte)50, "è¿å·"); public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(QueueStatusEnum::getStatus).toArray(); /** * ç¶æå¼ */ private final Byte status; /** * ç¶æå */ private final String name; @Override public int[] array() { return ARRAYS; } /* public static boolean isEnable(Integer status) { return ObjUtil.equal(ENABLE.status, status); } public static boolean isDisable(Integer status) { return ObjUtil.equal(DISABLE.status, status); } */ } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
@@ -128,14 +128,8 @@ BeanUtils.toBean(list, AppointmentRespVO.class)); } @PostMapping("/confirm") @Operation(summary = "é¢çº¦ç¡®è®¤") @PreAuthorize("@ss.hasPermission('ecg:appointment:confirm')") public CommonResult<String> appointmentConfirm(@RequestBody AppointmentConfirmReqVO confirmReqVO) { //TODO å¤çæéé»è¾ //AppointmentDO appointment = appointmentService.getAppointment(id); //return success(BeanUtils.toBean(appointment, AppointmentRespVO.class)); // TODO å¯¹æ¥æ°æ®å¹³å° private void getRemoteAppointment(AppointmentConfirmReqVO confirmReqVO) { RestApiReqBodyVo reqBodyVo = new RestApiReqBodyVo(); reqBodyVo.setSfzh(confirmReqVO.getPatId()); reqBodyVo.setMzzyh("A34343"); @@ -172,7 +166,7 @@ LocalDateTime bookEndTime = bookStartTime.plusMinutes(30); queueSaveReqVO.setBookTimeslot( (bookStartTime.getHour()*100 + bookStartTime.getMinute())*10000 + bookEndTime.getHour()*100 + bookEndTime.getMinute() ); + bookEndTime.getHour()*100 + bookEndTime.getMinute() ); //queueSaveReqVO.setBookCheckType( Byte.valueOf(appointmentExternal.getPlanDefItemList().getPlanDefItem().getPlanDefItemcode()) ); queueSaveReqVO.setBookCheckType( (byte)10 ); @@ -186,42 +180,24 @@ queueSaveReqVO.setBedNum("-"); queueService.createqueue(queueSaveReqVO); } @PostMapping("/confirm") @Operation(summary = "é¢çº¦ç¡®è®¤") @PreAuthorize("@ss.hasPermission('ecg:appointment:confirm')") public CommonResult<String> appointmentConfirm(@RequestBody AppointmentConfirmReqVO confirmReqVO) { //TODO å ä»é¢çº¦è¡¨åæ°æ®ï¼åç»å¯¹æ¥æ°æ®å¹³å°æ¥é¢çº¦æ°æ® AppointmentDO appointment = appointmentService.getAppointment(confirmReqVO.getId()); // è·ååè¯åå¤çé ç½®äººæ° ï¼ è¥ä¸çè¯å®¤ /* List<DeptDO> list = deptService.getDeptList( new DeptListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus())); return success(BeanUtils.toBean(list, DeptSimpleRespVO.class)); */ List<DeptRespDTO> deptRespDTOList = deptApi.getSimpleDeptList(); Optional<DeptRespDTO> ecgDept = deptRespDTOList.stream() .filter(a -> a.getName().equals("ECG")) .findAny(); if (ecgDept.isPresent()){ System.out.println(ecgDept.get().getName()); List<DeptRespDTO> list2 = deptRespDTOList.stream() .filter(a -> Objects.equals(a.getParentId(), ecgDept.get().getId())) .toList(); list2.forEach(System.out::println); list2.size(); } // è·åé¨è¯å®¤ è¯çåºçç»è®¡ List<RoomStatisticsDO> roomStatisticsList = roomService.roomStatistics(); roomStatisticsList.size(); // è·å æ¯ä¸ªè¥ä¸çè¯å®¤ åè¯åå¤çå½åäººæ° å°±è¯ä¸çå½åäººæ° // queueService.get List statusList = new ArrayList<Byte>(); statusList.add((byte)20); statusList.add((byte)30); List<QueueStatisticDO> queueStatisticDOList = queueService.queueStatistics(statusList); queueStatisticDOList.size(); QueueSaveReqVO queueSaveReqVO = new QueueSaveReqVO(); queueSaveReqVO.setPatId( appointment.getPatId()); queueSaveReqVO.setPatName( appointment.getPatName() ); queueSaveReqVO.setPatGender( appointment.getPatGender()); queueSaveReqVO.setBookTimeslot( appointment.getBookTimeslot() ); queueSaveReqVO.setBookCheckType( appointment.getBookCheckType() ); queueSaveReqVO.setPassed((byte)0); queueSaveReqVO.setExpired((byte)0); queueService.queue(queueSaveReqVO); return success("hello"); } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentConfirmReqVO.java
@@ -11,6 +11,8 @@ @Data public class AppointmentConfirmReqVO { private Integer id; @Schema(description = "æ£è ç¼å·", requiredMode = Schema.RequiredMode.REQUIRED, example = "29034") //@NotEmpty(message = "æ£è ç¼å·ä¸è½ä¸ºç©º") private String patId; jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomStatisticsDO.java
@@ -5,5 +5,6 @@ @Data public class RoomStatisticsDO { Long roomId; String roomName; Integer bedNum; } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java
@@ -45,6 +45,8 @@ " </foreach> )" + " group by status; " +"</script>") List<QueueStatisticDO> queueStatistic(@Param("statusList")List<Byte> statusList); @Select("SELECT max(seq_num) FROM lihu.queue") int getMaxSeqNum(); } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java
@@ -28,10 +28,10 @@ .orderByDesc(RoomDO::getId)); } @Select({ "SELECT room_id, count(1) as bed_num FROM lihu.clinic_room group by room_id;" }) @Select({ "SELECT room_id, room_name, count(1) as bed_num FROM lihu.clinic_room group by room_id;" }) List<RoomStatisticsDO> roomStatistic(); @Select({ "SELECT room_id, room_name FROM lihu.clinic_room where onstage=true group by room_id;" }) @Select({ "SELECT id, room_id, room_name, bed_no, onstage FROM lihu.clinic_room where onstage=true;" }) List<RoomDO> simpleRoomList(); } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedQueueBO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package cn.lihu.jh.module.ecg.service.queue; import lombok.Data; import org.jetbrains.annotations.NotNull; @Data public class BedQueueBO implements Comparable<BedQueueBO> { String bedNo; Long roomId; String roomName; Integer queueNum; Integer maxQueueNum; @Override public int compareTo(@NotNull BedQueueBO o) { return Integer.compare(o.queueNum, this.queueNum); } } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
@@ -56,4 +56,9 @@ List<QueueStatisticDO> queueStatistics(List<Byte> statusList); /** * æ£è æé * @param queueSaveReqVO */ void queue(QueueSaveReqVO queueSaveReqVO); } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
@@ -1,6 +1,12 @@ package cn.lihu.jh.module.ecg.service.queue; 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.dataobject.room.RoomStatisticsDO; import cn.lihu.jh.module.ecg.dal.mysql.room.RoomMapper; import cn.lihu.jh.module.ecg.enums.QueueStatusEnum; import lombok.Data; import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -11,9 +17,12 @@ import cn.lihu.jh.module.ecg.dal.mysql.queue.queueMapper; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.PriorityQueue; import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*; @@ -27,8 +36,17 @@ @Validated public class QueueServiceImpl implements QueueService { final static Integer MAX_QUEUE_NUM = 2; Integer curSeqNum = 0; PriorityQueue<BedQueueBO> priorityQueue = new PriorityQueue<>(); @Resource private queueMapper queueMapper; @Resource private RoomMapper roomMapper; @Override public Integer createqueue(QueueSaveReqVO createReqVO) { @@ -77,4 +95,35 @@ return queueMapper.queueStatistic(statusList); } } @Override public void queue(QueueSaveReqVO queueSaveReqVO) { BedQueueBO bedQueueBO = priorityQueue.peek(); if (bedQueueBO.queueNum == bedQueueBO.maxQueueNum) { queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus()); //æéä¸ } else if (bedQueueBO.queueNum < bedQueueBO.maxQueueNum) { queueSaveReqVO.setStatus(QueueStatusEnum.READY.getStatus()); //åè¯åå¤ä¸ queueSaveReqVO.setRoomNum(bedQueueBO.getRoomName()); queueSaveReqVO.setBedNum(bedQueueBO.getBedNo()); queueSaveReqVO.setSeqNum(curSeqNum++); QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class); queueMapper.insert(queue); // queue.getId(); bedQueueBO.queueNum++; } } @PostConstruct private void initQueue() { List<RoomDO> roomDOList = roomMapper.simpleRoomList(); List<BedQueueBO> bedQueueBOList = roomDOList.stream().map(item -> BeanUtils.toBean(item, BedQueueBO.class)).toList(); bedQueueBOList.forEach(item -> { item.maxQueueNum = MAX_QUEUE_NUM; item.queueNum = 0; priorityQueue.add(item); }); curSeqNum = queueMapper.getMaxSeqNum(); } } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java
@@ -58,4 +58,5 @@ List<RoomStatisticsDO> roomStatistics(); List<RoomDO> simpleRoomList(); } jh-server/src/main/resources/application-local.yaml
@@ -76,7 +76,7 @@ redis: host: 116.62.18.175 #r-bp1zyjl0g07e1ry08rpd.redis.rds.aliyuncs.com # å°å port: 6020 #ç«¯å£ 6379 database: 2 # æ°æ®åºç´¢å¼ database: 15 # æ°æ®åºç´¢å¼ password: Smartor #Root@yinyu # å¯ç ï¼å»ºè®®ç产ç¯å¢å¼å¯ --- #################### 宿¶ä»»å¡ç¸å ³é ç½® ####################