From adb4da3c83649d550b8674feb1eb0926fbace30e Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期一, 11 十一月 2024 13:45:12 +0800
Subject: [PATCH] 排队&抢人时 亲和检查项目处理
---
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/QueueDO.java | 11 ++++-
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/QueueSaveReqVO.java | 8 +++
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceImpl.java | 24 +++++++++++
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/QueueMapper.java | 13 ++++++
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java | 1
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java | 18 +++++++++
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java | 3 +
7 files changed, 74 insertions(+), 4 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
index cc41642..f6f998d 100644
--- 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
@@ -19,6 +19,7 @@
PASSED(5, "宸茶繃鍙�"),
PASSED_INSTALL(7, "宸茶繃鍙�-瀹夎"),
WAITING(10, "鎺掗槦涓�"),
+ AFFINITY_ALREADY(12, "宸蹭翰鍜�"),
RECALLED(15, "宸插彫鍥�"),
RECALLED_INSTALL(17, "宸插彫鍥�-瀹夎"),
READY(20, "鍊欒瘖涓�"),
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/QueueSaveReqVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/QueueSaveReqVO.java
index e8b7809..219c1a9 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/QueueSaveReqVO.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/QueueSaveReqVO.java
@@ -1,11 +1,14 @@
package cn.lihu.jh.module.ecg.controller.admin.queue.vo;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
+import java.util.List;
@Schema(description = "绠$悊鍚庡彴 - 鎺掗槦鏂板/淇敼 Request VO")
@@ -73,4 +76,7 @@
@Schema(description = "璇婄枟搴婄紪鍙�")
private String bedNo;
-}
\ No newline at end of file
+ @Schema(description = "浜插拰鐨勬鏌ラ」")
+ private List<Integer> affinityItems;
+}
+
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/QueueDO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/QueueDO.java
index 3fde382..527bf28 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/QueueDO.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/QueueDO.java
@@ -1,17 +1,19 @@
package cn.lihu.jh.module.ecg.dal.dataobject.queue;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*;
import com.baomidou.mybatisplus.annotation.*;
import cn.lihu.jh.framework.mybatis.core.dataobject.BaseDO;
import java.time.LocalDate;
+import java.util.List;
/**
* 鎺掗槦 DO
*
* @author 鑺嬮亾婧愮爜
*/
-@TableName("queue")
+@TableName( value="queue", autoResultMap = true )
@KeySequence("queue_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
@Data
@EqualsAndHashCode(callSuper = true)
@@ -94,5 +96,10 @@
* 璇婄枟搴婄紪鍙�
*/
private String bedNo;
+ /**
+ * 浜插拰椤�
+ */
+ @TableField(typeHandler = JacksonTypeHandler.class)
+ private List<Integer> affinityItems;
+}
-}
\ 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/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 be4e8d3..f1a3728 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
@@ -39,6 +39,9 @@
@Select("SELECT max(seq_num) FROM lihu.queue")
Integer getMaxSeqNum();
+ @Select("SELECT * FROM lihu.queue where seq_num = #{seqNum}")
+ QueueDO getQueueItemBySeqNum(@Param("seqNum")Integer seqNum);
+
@Select("SELECT * FROM lihu.queue where pat_id = #{patId}")
QueueDO getQueueByPatId(@Param("patId")String patId);
@@ -64,6 +67,16 @@
@Select("<script>" +
"SELECT * FROM lihu.queue " +
+ "where pat_id = #{patId} and book_check_type in (" +
+ " <foreach collection='arrCheckType' separator=',' item='checkType'>" +
+ " #{checkType} " +
+ " </foreach> )" +
+ " and TO_DAYS(book_date) = TO_DAYS(NOW()) " +
+ "</script>")
+ List<QueueDO> getCurPatGivenCheckItems(@Param("patId")String patId, @Param("checkTypeList")Integer[] arrCheckType);
+
+ @Select("<script>" +
+ "SELECT * FROM lihu.queue " +
"where id >= #{from} and status in (" +
" <foreach collection='statusList' separator=',' item='status'>" +
" #{status} " +
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java
index 3dedf51..a374f68 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java
@@ -3,12 +3,14 @@
import cn.lihu.jh.framework.common.util.date.DateUtils;
import cn.lihu.jh.framework.common.util.date.LocalDateTimeUtils;
import cn.lihu.jh.module.ecg.controller.admin.queue.vo.QueueSaveReqVO;
+import cn.lihu.jh.module.ecg.dal.dataobject.checktype.CheckTypeDO;
import cn.lihu.jh.module.ecg.feign.RemoteDataService;
import cn.lihu.jh.module.ecg.feign.RestApiReqBodyVo;
import cn.lihu.jh.module.ecg.feign.RestApiResult;
import cn.lihu.jh.module.ecg.feign.dto.AppointmentExternal;
import cn.lihu.jh.module.ecg.service.config.EcgConfigService;
import cn.lihu.jh.module.ecg.service.queue.QueueService;
+import cn.lihu.jh.module.ecg.service.queue.QueueServiceTxFunctions;
import cn.lihu.jh.module.ecg.service.queuesequence.QueueSequenceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException;
@@ -211,6 +213,7 @@
if (null == appointment)
throw exception(PATIENT_NOT_EXISTS);
+ // 鎵嬪姩棰勭害锛岀洿鎺ヨ缃绾︽棩鏈熶负褰撳ぉ
if (confirmReqVO.getIsVip() == 1) {
appointment.setBookDate( LocalDate.now() );
}
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 521e266..477871b 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 cn.lihu.jh.module.ecg.Utils;
import cn.lihu.jh.module.ecg.controller.admin.room.vo.MonitorInfoVO;
+import cn.lihu.jh.module.ecg.dal.dataobject.checktype.CheckTypeDO;
import cn.lihu.jh.module.ecg.dal.dataobject.devrent.DevRentDO;
import cn.lihu.jh.module.ecg.dal.mysql.call.CallMapper;
import cn.lihu.jh.module.ecg.dal.mysql.devrent.DevRentMapper;
@@ -317,7 +318,28 @@
@Override
@Transactional
public void queue(QueueSaveReqVO queueSaveReqVO) {
- queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus()); //鎺掗槦涓�
+ queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus()); //榛樿鐘舵��: 鎺掗槦涓�
+
+ // 澶勭悊 妫�鏌ラ」鐩�.浜插拰鎬� 閫昏緫
+ CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( queueSaveReqVO.getBookCheckType() );
+ if ( checkTypeDO.getAffinityCheckTypes().length > 0) {
+ List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckItems(queueSaveReqVO.getPatId(), checkTypeDO.getAffinityCheckTypes());
+ //List<Integer> affinityItemIDs = affinityItems.stream().map(queueItem -> queueItem.getId()).toList();
+ //queueSaveReqVO.setAffinityItems(affinityItemIDs);
+
+ for (int i=0; i < affinityItems.size(); i++) {
+ QueueDO queueItem = affinityItems.get(i);
+ if (QueueStatusEnum.READY.getStatus() == queueItem.getStatus()
+ || QueueStatusEnum.ONSTAGE.getStatus() == queueItem.getStatus()) {
+ queueSaveReqVO.setStatus(QueueStatusEnum.AFFINITY_ALREADY.getStatus()); //鏀瑰彉 鎺掗槦鐘舵��
+ queueSaveReqVO.setRoomId(queueItem.getRoomId());
+ queueSaveReqVO.setRoomName(queueItem.getRoomName());
+ queueSaveReqVO.setBedNo(queueItem.getBedNo());
+ break;
+ }
+ }
+ }
+
QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class);
queueMapper.insert(queue);
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java
index 86f8b28..7fede40 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java
@@ -418,6 +418,20 @@
return;
}
+ // 鎶㈠埌鎺掗槦鎮h�呭悗锛屽鐞� 妫�鏌ラ」鐩�.浜插拰鎬� 閫昏緫
+ QueueDO queueDO = queueMapper.getQueueItemBySeqNum(curSeqNum.get() + 1);
+ CheckTypeDO checkTypeDO = getCheckTypeItem( queueDO.getBookCheckType() );
+ if ( checkTypeDO.getAffinityCheckTypes().length > 0) {
+ List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckItems(queueDO.getPatId(), checkTypeDO.getAffinityCheckTypes());
+ for (int i = 0; i < affinityItems.size(); i++) {
+ QueueDO queueItem = affinityItems.get(i);
+ queueItem.setStatus(QueueStatusEnum.AFFINITY_ALREADY.getStatus()); //鏀瑰彉 鎺掗槦鐘舵��
+ queueItem.setRoomId(queueItem.getRoomId());
+ queueItem.setRoomName(queueItem.getRoomName());
+ queueItem.setBedNo(queueItem.getBedNo());
+ }
+ }
+
curSeqNum.getAndIncrement();
// 鍙兘宸茬粡銆愬苟鍙戠殑銆戝湪 nextPatient 涓敼鍙樹簡鍊�
@@ -441,6 +455,10 @@
mapCheckTypeVsReadyMax = checkTypeDOList.stream().collect(Collectors.toMap(CheckTypeDO::getValue, checkType -> checkType));
}
+ public CheckTypeDO getCheckTypeItem(Integer checkType) {
+ return mapCheckTypeVsReadyMax.get( checkType );
+ }
+
public BedQueueBO getBedQueueBO(Long roomId, String bedNo) {
return mapBedVsQueue.get( Utils.formatRoomBed(roomId, bedNo) );
}
--
Gitblit v1.9.3