diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/application/controller/MedicalRecordController.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/application/controller/MedicalRecordController.java index 7cc6f6837..2f4b73fa3 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/application/controller/MedicalRecordController.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/application/controller/MedicalRecordController.java @@ -36,7 +36,11 @@ public class MedicalRecordController { @RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size) { - PageInfo pageInfo = medicalRecordService.listPendingRecords(page, size); + // 参数为空时使用默认值,避免前端不传导致全表查询 + int pageNum = (page == null || page < 1) ? 1 : page; + int pageSize = (size == null || size < 1) ? 20 : size; + + PageInfo pageInfo = medicalRecordService.listPendingRecords(pageNum, pageSize); return ApiResponse.success(pageInfo); } diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/application/service/impl/MedicalRecordServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/application/service/impl/MedicalRecordServiceImpl.java index 848bafb72..7f4e4f910 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/application/service/impl/MedicalRecordServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/application/service/impl/MedicalRecordServiceImpl.java @@ -50,37 +50,30 @@ public class MedicalRecordServiceImpl implements MedicalRecordService { /** * 查询待写病历(分页)。 * - * @param pageNum 页码(从 1 开始),若为 null 则使用默认页码 1 - * @param pageSize 每页条数,若为 null 则使用默认值 {@link #DEFAULT_PAGE_SIZE} - * @return 包含分页信息的待写病历列表 + * @param page 页码,若为 null 或小于 1 则使用 1 + * @param size 每页条数,若为 null 或小于 1 则使用 {@link #DEFAULT_PAGE_SIZE} + * @return 分页结果 */ @Override @Transactional(readOnly = true) - public PageInfo listPendingRecords(Integer pageNum, Integer pageSize) { - int pn = (pageNum == null || pageNum < 1) ? 1 : pageNum; - int ps = (pageSize == null || pageSize < 1) ? DEFAULT_PAGE_SIZE : pageSize; + public PageInfo listPendingRecords(Integer page, Integer size) { + int pageNum = (page == null || page < 1) ? 1 : page; + int pageSize = (size == null || size < 1) ? DEFAULT_PAGE_SIZE : size; - // 使用 PageHelper 自动在 SQL 中加入 LIMIT/OFFSET - PageHelper.startPage(pn, ps); - List records = medicalRecordMapper.selectPending(); - - // PageInfo 包含 total、pages、pageNum、pageSize 等信息,前端可直接使用 - return new PageInfo<>(records); - } - - /** - * 其它业务方法保持不变… - */ - @Override - @Transactional - public void saveMedicalRecord(MedicalRecord record) { try { - medicalRecordMapper.insert(record); + // PageHelper 会在执行 selectPending 前拦截并自动添加 LIMIT/OFFSET + PageHelper.startPage(pageNum, pageSize); + List records = medicalRecordMapper.selectPending(); + return new PageInfo<>(records); } catch (Exception e) { - log.error("保存待写病历失败,record={}", record, e); - throw new BusinessException("保存病历失败,请稍后重试"); + log.error("查询待写病历分页数据失败,page={}, size={}", pageNum, pageSize, e); + // 统一抛出业务异常,控制层会捕获并返回统一错误响应 + throw new BusinessException("查询待写病历失败,请稍后重试"); + } finally { + // 确保 PageHelper 的线程局部变量被清理,防止对后续查询产生影响 + PageHelper.clearPage(); } } - // … 其余实现保持原样 … + // 其它业务方法保持不变… }