From 8c2f79b721a05fbf73c50a78b267ea3868c632d2 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期四, 15 八月 2024 14:00:40 +0800
Subject: [PATCH] update
---
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedQueueBO.java | 18 ++++
jh-server/src/main/resources/application-local.yaml | 2
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java | 62 ++++----------
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentConfirmReqVO.java | 2
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java | 52 +++++++++++++
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java | 51 ++++++++++++
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java | 4
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java | 4
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomStatisticsDO.java | 1
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java | 5 +
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java | 1
11 files changed, 154 insertions(+), 48 deletions(-)
diff --git a/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java
new file mode 100644
index 0000000..50b5800
--- /dev/null
+++ b/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);
+ }
+*/
+
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
index 6b0f76d..574bae5 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
+++ b/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");
}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentConfirmReqVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentConfirmReqVO.java
index b68c083..551d6d4 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentConfirmReqVO.java
+++ b/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 = "鎮h�呯紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "29034")
//@NotEmpty(message = "鎮h�呯紪鍙蜂笉鑳戒负绌�")
private String patId;
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomStatisticsDO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomStatisticsDO.java
index c60558f..cb7e2dc 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomStatisticsDO.java
+++ b/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;
}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java
index 1cd7419..faacf8c 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java
+++ b/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();
}
\ No newline at end of file
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 6d6543a..7298f70 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
@@ -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();
}
\ No newline at end of file
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
new file mode 100644
index 0000000..86ae942
--- /dev/null
+++ b/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);
+ }
+}
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 101ded9..4e90d54 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
@@ -56,4 +56,9 @@
List<QueueStatisticDO> queueStatistics(List<Byte> statusList);
+ /**
+ * 鎮h�呮帓闃�
+ * @param queueSaveReqVO
+ */
+ void queue(QueueSaveReqVO queueSaveReqVO);
}
\ No newline at end of file
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 936379e..5b558c7 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,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);
}
-}
\ No newline at end of file
+ @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();
+ }
+}
+
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java
index 24e2a19..bba206e 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java
+++ b/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();
+
}
\ No newline at end of file
diff --git a/jh-server/src/main/resources/application-local.yaml b/jh-server/src/main/resources/application-local.yaml
index ac5815c..acac1e8 100644
--- a/jh-server/src/main/resources/application-local.yaml
+++ b/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 # 瀵嗙爜锛屽缓璁敓浜х幆澧冨紑鍚�
--- #################### 瀹氭椂浠诲姟鐩稿叧閰嶇疆 ####################
--
Gitblit v1.9.3