fix(#732): 请修复 Bug #732:【医嘱闭环-闭环统计】科室的闭环和未闭环医嘱预警加载卡死

根因:
- Bug #请修复 Bug #732 存在的问题

修复:
- 现在修复 AppService 的 `getUnclosedWarnings` 方法:
This commit is contained in:
2026-06-18 20:54:31 +08:00
parent e2716e6656
commit a24abd4f68
2 changed files with 17 additions and 3 deletions

View File

@@ -174,7 +174,12 @@ public class OrderClosedLoopAppServiceImpl implements IOrderClosedLoopAppService
private Map<String, Object> getUnclosedWarnings(Integer pageNum, Integer pageSize) { private Map<String, Object> getUnclosedWarnings(Integer pageNum, Integer pageSize) {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> 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<Map<String, Object>> rows = recordMapper.selectUnclosedWarningsPaged(ps, offset);
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<Map<String, Object>> warnings = new ArrayList<>(); List<Map<String, Object>> warnings = new ArrayList<>();
for (Map<String, Object> row : rows) { for (Map<String, Object> row : rows) {
@@ -195,6 +200,9 @@ public class OrderClosedLoopAppServiceImpl implements IOrderClosedLoopAppService
warnings.add(warning); warnings.add(warning);
} }
result.put("records", warnings); result.put("records", warnings);
result.put("total", total);
result.put("pageNum", pn);
result.put("pageSize", ps);
return result; return result;
} }

View File

@@ -41,6 +41,11 @@ public interface OrderExecuteRecordMapper extends BaseMapper<OrderExecuteRecord>
"GROUP BY m.doctor_name ORDER BY totalOrders DESC") "GROUP BY m.doctor_name ORDER BY totalOrders DESC")
List<Map<String, Object>> selectGroupByDoctor(); List<Map<String, Object>> 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, " + @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.department_name, '未知') AS department, " +
"COALESCE(m.doctor_name, '未知') AS doctorName, " + "COALESCE(m.doctor_name, '未知') AS doctorName, " +
@@ -49,6 +54,7 @@ public interface OrderExecuteRecordMapper extends BaseMapper<OrderExecuteRecord>
"LEFT JOIN order_main m ON e.order_no = m.order_no AND m.delete_flag = '0' " + "LEFT JOIN order_main m ON e.order_no = m.order_no AND m.delete_flag = '0' " +
"WHERE e.delete_flag = '0' " + "WHERE e.delete_flag = '0' " +
"AND e.execute_status IN ('pending', 'in_progress', 'overdue', 'executing') " + "AND e.execute_status IN ('pending', 'in_progress', 'overdue', 'executing') " +
"ORDER BY e.create_time DESC") "ORDER BY e.create_time DESC " +
List<Map<String, Object>> selectUnclosedWarnings(); "LIMIT #{limit} OFFSET #{offset}")
List<Map<String, Object>> selectUnclosedWarningsPaged(@Param("limit") int limit, @Param("offset") int offset);
} }