From 0fd0e25a460999c196266a39943b19cfdd136a53 Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Wed, 27 May 2026 05:19:35 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#562:=20fallback=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TriageQueueServiceImpl.java | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/application/service/impl/TriageQueueServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/application/service/impl/TriageQueueServiceImpl.java index 0fb0ec3ed..4ec95b333 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/application/service/impl/TriageQueueServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/application/service/impl/TriageQueueServiceImpl.java @@ -9,11 +9,13 @@ import com.openhis.application.service.TriageQueueService; import org.springframework.stereotype.Service; import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; /** * 智能分诊排队业务实现 * 修复 Bug #544:移除对“完诊”状态的隐式过滤,增加时间范围查询支持 + * 新增修复 Bug #562:默认过滤已完诊状态,避免全表扫描导致加载慢 */ @Service public class TriageQueueServiceImpl implements TriageQueueService { @@ -26,7 +28,8 @@ public class TriageQueueServiceImpl implements TriageQueueService { @Override public PageInfo getQueueList(TriageQueueQueryDTO query) { - // 修复 Bug #544:默认查询当天,若前端未传时间则自动填充,避免全表扫描 + // ---------- 日期默认值 ---------- + // 若前端未传时间则自动填充为当天,避免全表扫描 if (query.getStartDate() == null || query.getStartDate().isEmpty()) { query.setStartDate(LocalDate.now().toString()); } @@ -34,9 +37,25 @@ public class TriageQueueServiceImpl implements TriageQueueService { query.setEndDate(LocalDate.now().toString()); } - // 修复 Bug #544:不再硬编码过滤 status != 'COMPLETED',交由 Mapper 动态 SQL 处理 - PageHelper.startPage(query.getPageNum() != null ? query.getPageNum() : 1, - query.getPageSize() != null ? query.getPageSize() : 20); + // ---------- 状态默认过滤 ---------- + // 为防止一次性查询全部状态(尤其是大量已完诊记录)导致页面卡顿, + // 当前端未指定状态时,默认只查询“候诊”和“就诊中”两种活跃状态。 + // 完诊状态仍可通过前端手动选择查询。 + if (query.getStatusList() == null || query.getStatusList().isEmpty()) { + List defaultStatus = new ArrayList<>(); + defaultStatus.add("WAITING"); // 候诊 + defaultStatus.add("IN_PROGRESS"); // 就诊中 + query.setStatusList(defaultStatus); + } + + // ---------- 分页 ---------- + PageHelper.startPage( + query.getPageNum() != null ? query.getPageNum() : 1, + query.getPageSize() != null ? query.getPageSize() : 20 + ); + + // ---------- 数据查询 ---------- + // 交由 Mapper 动态 SQL 处理所有过滤条件 List list = triageQueueMapper.selectQueueList(query); return new PageInfo<>(list); }