fix(医嘱核对): 修正截止时间筛选逻辑与默认值
1. 将前端默认截止时间从当天00:00:00改为23:59:59 2. 重构后端筛选条件,改为当日0点到指定截止时间的范围查询 3. 移除冗余的空安全终止时间判断逻辑
This commit is contained in:
@@ -188,7 +188,6 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
|
|||||||
inpatientAdviceParam.setRequestStatus(null);
|
inpatientAdviceParam.setRequestStatus(null);
|
||||||
// 提取deadline手动处理
|
// 提取deadline手动处理
|
||||||
// Bug #714修复:截止时间过滤,使用request_time限制检索范围
|
// Bug #714修复:截止时间过滤,使用request_time限制检索范围
|
||||||
// Bug #763修复:NULL-safe的end_time比较
|
|
||||||
String deadline = inpatientAdviceParam.getDeadline();
|
String deadline = inpatientAdviceParam.getDeadline();
|
||||||
inpatientAdviceParam.setDeadline(null);
|
inpatientAdviceParam.setDeadline(null);
|
||||||
// 构建查询条件
|
// 构建查询条件
|
||||||
@@ -218,15 +217,17 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
|
|||||||
= Arrays.stream(encounterIds.split(CommonConstants.Common.COMMA)).map(Long::parseLong).toList();
|
= Arrays.stream(encounterIds.split(CommonConstants.Common.COMMA)).map(Long::parseLong).toList();
|
||||||
queryWrapper.in(CommonConstants.FieldName.EncounterId, encounterIdList);
|
queryWrapper.in(CommonConstants.FieldName.EncounterId, encounterIdList);
|
||||||
}
|
}
|
||||||
// 手动拼接截止时间条件:
|
// 手动拼接截止时间条件:当天00:00:00 <= request_time <= deadline
|
||||||
// 1. request_time >= deadline:只显示截止时间之后创建的医嘱(Bug #714修复)
|
// 默认deadline为当天23:59:59,既排除历史医嘱,又保证护士可以校对当天医嘱。
|
||||||
// 默认值为当天00:00:00,默认只加载当天数据,避免加载过长周期的历史未核对数据
|
|
||||||
// 2. end_time IS NULL OR end_time <= deadline:NULL-safe终止时间比较(Bug #763修复)
|
|
||||||
if (deadline != null && !deadline.isEmpty()) {
|
if (deadline != null && !deadline.isEmpty()) {
|
||||||
Date deadlineTime = DateUtils.parseDate(deadline);
|
Date deadlineTime = DateUtils.parseDate(deadline);
|
||||||
if (deadlineTime != null) {
|
if (deadlineTime != null) {
|
||||||
queryWrapper.ge("request_time", deadlineTime);
|
Date dayStartTime = Date.from(deadlineTime.toInstant()
|
||||||
queryWrapper.and(w -> w.isNull("end_time").or().le("end_time", deadlineTime));
|
.atZone(ZoneId.systemDefault())
|
||||||
|
.toLocalDate()
|
||||||
|
.atStartOfDay(ZoneId.systemDefault())
|
||||||
|
.toInstant());
|
||||||
|
queryWrapper.between("request_time", dayStartTime, deadlineTime);
|
||||||
} else {
|
} else {
|
||||||
log.warn("截止时间解析失败: {}", deadline);
|
log.warn("截止时间解析失败: {}", deadline);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,10 @@
|
|||||||
临时
|
临时
|
||||||
</el-radio>
|
</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
|
<span
|
||||||
|
class="descriptions-item-label"
|
||||||
|
style="flex-shrink: 0;"
|
||||||
|
>截止时间:</span>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="deadline"
|
v-model="deadline"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
@@ -413,7 +417,7 @@ import {RequestStatus} from '@/utils/medicalConstants';
|
|||||||
|
|
||||||
const activeNames = ref([]);
|
const activeNames = ref([]);
|
||||||
const prescriptionList = ref([]);
|
const prescriptionList = ref([]);
|
||||||
const deadline = ref(formatDateStr(new Date(), 'YYYY-MM-DD') + ' 00:00:00');
|
const deadline = ref(formatDateStr(new Date(), 'YYYY-MM-DD') + ' 23:59:59');
|
||||||
const type = ref(0);
|
const type = ref(0);
|
||||||
const backReasonVisible = ref(false);
|
const backReasonVisible = ref(false);
|
||||||
const backReasonForm = ref({ reason: '' });
|
const backReasonForm = ref({ reason: '' });
|
||||||
|
|||||||
Reference in New Issue
Block a user