fix(#763): guanyu (文件合入)

This commit is contained in:
2026-06-15 15:46:59 +08:00
committed by 华佗
parent 20f71ec5d9
commit 219ac30dc5

View File

@@ -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,9 +184,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
// 提取requestStatus手动处理支持COMPLETED(3)和CHECK_VERIFIED(10)同时查询
Integer requestStatus = inpatientAdviceParam.getRequestStatus();
inpatientAdviceParam.setRequestStatus(null);
// deadline 不在 UNION 子查询结果列中,且不映射为查询过滤条件
// 原因end_time 是医嘱结束时间,长期医嘱的 end_time 远在 deadline 之后,
// 使用 <= 过滤会排除所有长期医嘱,导致"未校对"tab 查询为空
// 提取deadline手动处理需要做NULL-safe的end_time比较Bug #763修复
String deadline = inpatientAdviceParam.getDeadline();
inpatientAdviceParam.setDeadline(null);
// 构建查询条件
QueryWrapper<InpatientAdviceParam> queryWrapper
@@ -208,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 <= deadlineBug #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<InpatientAdviceDto> inpatientAdvicePage
= adviceProcessAppMapper.selectInpatientAdvicePage(new Page<>(pageNo, pageSize), queryWrapper,
@@ -512,8 +525,7 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
if (!deviceRequestList.isEmpty()) {
// 更新耗材请求状态待发送
deviceRequestService.updateDraftStatusBatch(
deviceRequestList.stream().map(PerformInfoDto::getRequestId).toList(),
practitionerId, checkDate, backReason);
deviceRequestList.stream().map(PerformInfoDto::getRequestId).toList());
}
return R.ok(null, "退回成功");
}