diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java index 3d84e113f..2fd45421a 100755 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java @@ -53,7 +53,9 @@ import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.SimpleDateFormat; import java.time.LocalDateTime; +import java.util.Date; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -182,6 +184,9 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService { // 提取requestStatus手动处理,支持COMPLETED(3)和CHECK_VERIFIED(10)同时查询 Integer requestStatus = inpatientAdviceParam.getRequestStatus(); inpatientAdviceParam.setRequestStatus(null); + // 提取deadline手动处理,需要做NULL-safe的end_time比较(Bug #763修复) + String deadline = inpatientAdviceParam.getDeadline(); + inpatientAdviceParam.setDeadline(null); // 构建查询条件 QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(inpatientAdviceParam, null, null, null); @@ -204,6 +209,18 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService { = Arrays.stream(encounterIds.split(CommonConstants.Common.COMMA)).map(Long::parseLong).toList(); queryWrapper.in(CommonConstants.FieldName.EncounterId, encounterIdList); } + // 手动拼接deadline条件:end_time IS NULL OR end_time <= deadline(Bug #763修复) + // 住院医嘱的effective_dose_end可能为NULL(签发临时医嘱时未设置结束时间), + // PostgreSQL中 NULL <= anything 结果为FALSE,需要先判断IS NULL + if (deadline != null && !deadline.isEmpty()) { + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date deadlineTime = sdf.parse(deadline); + queryWrapper.and(w -> w.isNull("end_time").or().le("end_time", deadlineTime)); + } catch (java.text.ParseException e) { + // deadline解析失败,忽略此条件 + } + } // 患者医嘱分页列表 Page inpatientAdvicePage = adviceProcessAppMapper.selectInpatientAdvicePage(new Page<>(pageNo, pageSize), queryWrapper,