From be2a2f90cb8a91f4756b3730b53fa2774f3097ba Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Thu, 18 Jun 2026 20:57:12 +0800 Subject: [PATCH] =?UTF-8?q?fix(#732):=20zhaoyun=20(=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=88=E5=85=A5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appservice/impl/OrderClosedLoopAppServiceImpl.java | 10 +++++++++- .../mapper/OrderExecuteRecordMapper.java | 10 ++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/orderclosedloop/appservice/impl/OrderClosedLoopAppServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/orderclosedloop/appservice/impl/OrderClosedLoopAppServiceImpl.java index 3016d3bfa..bb0bf5b71 100644 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/orderclosedloop/appservice/impl/OrderClosedLoopAppServiceImpl.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/orderclosedloop/appservice/impl/OrderClosedLoopAppServiceImpl.java @@ -174,7 +174,12 @@ public class OrderClosedLoopAppServiceImpl implements IOrderClosedLoopAppService private Map getUnclosedWarnings(Integer pageNum, Integer pageSize) { Map result = new HashMap<>(); - List> rows = recordMapper.selectUnclosedWarnings(); + // 使用分页查询避免全量拉取导致卡死 + int pn = (pageNum != null && pageNum > 0) ? pageNum : 1; + int ps = (pageSize != null && pageSize > 0) ? pageSize : 10; + int offset = (pn - 1) * ps; + long total = recordMapper.countUnclosedWarnings(); + List> rows = recordMapper.selectUnclosedWarningsPaged(ps, offset); java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List> warnings = new ArrayList<>(); for (Map row : rows) { @@ -195,6 +200,9 @@ public class OrderClosedLoopAppServiceImpl implements IOrderClosedLoopAppService warnings.add(warning); } result.put("records", warnings); + result.put("total", total); + result.put("pageNum", pn); + result.put("pageSize", ps); return result; } diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/orderclosedloop/mapper/OrderExecuteRecordMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/orderclosedloop/mapper/OrderExecuteRecordMapper.java index 079f5b3f8..1159fd20b 100644 --- a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/orderclosedloop/mapper/OrderExecuteRecordMapper.java +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/orderclosedloop/mapper/OrderExecuteRecordMapper.java @@ -41,6 +41,11 @@ public interface OrderExecuteRecordMapper extends BaseMapper "GROUP BY m.doctor_name ORDER BY totalOrders DESC") List> selectGroupByDoctor(); + @Select("SELECT COUNT(*) FROM order_execute_record e " + + "WHERE e.delete_flag = '0' " + + "AND e.execute_status IN ('pending', 'in_progress', 'overdue', 'executing')") + long countUnclosedWarnings(); + @Select("SELECT e.order_no AS orderNo, e.patient_name AS patientName, e.order_type AS orderType, " + "COALESCE(m.department_name, '未知') AS department, " + "COALESCE(m.doctor_name, '未知') AS doctorName, " + @@ -49,6 +54,7 @@ public interface OrderExecuteRecordMapper extends BaseMapper "LEFT JOIN order_main m ON e.order_no = m.order_no AND m.delete_flag = '0' " + "WHERE e.delete_flag = '0' " + "AND e.execute_status IN ('pending', 'in_progress', 'overdue', 'executing') " + - "ORDER BY e.create_time DESC") - List> selectUnclosedWarnings(); + "ORDER BY e.create_time DESC " + + "LIMIT #{limit} OFFSET #{offset}") + List> selectUnclosedWarningsPaged(@Param("limit") int limit, @Param("offset") int offset); } \ No newline at end of file