From be2a2f90cb8a91f4756b3730b53fa2774f3097ba Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Thu, 18 Jun 2026 20:57:12 +0800 Subject: [PATCH 1/2] =?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 From 3ffb6c8a47365d1d5f332ee2dc414459b227176d Mon Sep 17 00:00:00 2001 From: zhaoyun Date: Thu, 18 Jun 2026 21:14:44 +0800 Subject: [PATCH 2/2] =?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 --- .../mapper/OrderExecuteRecordMapper.java | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) 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 1159fd20b..686217082 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 @@ -15,30 +15,30 @@ public interface OrderExecuteRecordMapper extends BaseMapper @Select("SELECT m.department_name FROM order_main m WHERE m.order_no = #{orderNo} AND m.delete_flag = '0' LIMIT 1") String findDepartmentByOrderNo(@Param("orderNo") String orderNo); - @Select("SELECT e.order_type AS orderType, " + - "COUNT(*) AS totalOrders, " + - "COUNT(CASE WHEN e.execute_status = 'completed' THEN 1 END) AS closedCount " + + @Select("SELECT e.order_type AS \"orderType\", " + + "COUNT(*) AS \"totalOrders\", " + + "COUNT(CASE WHEN e.execute_status = 'completed' THEN 1 END) AS \"closedCount\" " + "FROM order_execute_record e " + "WHERE e.delete_flag = '0' AND e.execute_status != 'cancelled' " + "GROUP BY e.order_type") List> selectOverviewByType(); - @Select("SELECT COALESCE(m.department_name, '未知') AS department, " + - "COUNT(*) AS totalOrders, " + - "COUNT(CASE WHEN e.execute_status = 'completed' THEN 1 END) AS closedCount " + + @Select("SELECT COALESCE(m.department_name, '未知') AS \"department\", " + + "COUNT(*) AS \"totalOrders\", " + + "COUNT(CASE WHEN e.execute_status = 'completed' THEN 1 END) AS \"closedCount\" " + "FROM order_execute_record e " + "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 != 'cancelled' " + - "GROUP BY m.department_name ORDER BY totalOrders DESC") + "GROUP BY m.department_name ORDER BY \"totalOrders\" DESC") List> selectGroupByDepartment(); - @Select("SELECT COALESCE(m.doctor_name, '未知') AS doctorName, " + - "COUNT(*) AS totalOrders, " + - "COUNT(CASE WHEN e.execute_status = 'completed' THEN 1 END) AS closedCount " + + @Select("SELECT COALESCE(m.doctor_name, '未知') AS \"doctorName\", " + + "COUNT(*) AS \"totalOrders\", " + + "COUNT(CASE WHEN e.execute_status = 'completed' THEN 1 END) AS \"closedCount\" " + "FROM order_execute_record e " + "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 != 'cancelled' " + - "GROUP BY m.doctor_name ORDER BY totalOrders DESC") + "GROUP BY m.doctor_name ORDER BY \"totalOrders\" DESC") List> selectGroupByDoctor(); @Select("SELECT COUNT(*) FROM order_execute_record e " + @@ -46,10 +46,10 @@ public interface OrderExecuteRecordMapper extends BaseMapper "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, " + - "e.current_step AS currentStep, e.create_time AS orderTime " + + @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\", " + + "e.current_step AS \"currentStep\", e.create_time AS \"orderTime\" " + "FROM order_execute_record e " + "LEFT JOIN order_main m ON e.order_no = m.order_no AND m.delete_flag = '0' " + "WHERE e.delete_flag = '0' " +