fix(#763): guanyu (文件合入)
This commit is contained in:
@@ -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 <= 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<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, "退回成功");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user