Fix Bug #401: 门诊完诊审计日志错误:div_log 表中 pool_id 与 slot_id 存值与设计规范不符
根因:completeEncounter 方法中先将队列状态更新为 COMPLETED,再用内存中 的 queueItem.getStatus() 判断是否已完诊,导致 queueAlreadyCompleted 始终为 true, div_log 审计日志永远不会被写入。 修复:在更新队列状态之前记录原始完成状态(queueWasAlreadyCompleted), 用该值判断是否需要写入 div_log,确保完诊时正确生成审计日志。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -326,6 +326,9 @@ public class DoctorStationMainAppServiceImpl implements IDoctorStationMainAppSer
|
|||||||
|
|
||||||
// 如果队列项存在且未完成,更新队列状态为已完成
|
// 如果队列项存在且未完成,更新队列状态为已完成
|
||||||
// 使用排除法而非白名单:只要不是"已完成"就可以完诊,覆盖跳过、等待等非标准流转状态
|
// 使用排除法而非白名单:只要不是"已完成"就可以完诊,覆盖跳过、等待等非标准流转状态
|
||||||
|
// Bug #401:在更新前记录队列原始完成状态,用于判断是否需要写入 div_log
|
||||||
|
boolean queueWasAlreadyCompleted = queueItem != null
|
||||||
|
&& TriageQueueStatus.COMPLETED.getValue().equals(queueItem.getStatus());
|
||||||
if (queueItem != null &&
|
if (queueItem != null &&
|
||||||
!TriageQueueStatus.COMPLETED.getValue().equals(queueItem.getStatus())) {
|
!TriageQueueStatus.COMPLETED.getValue().equals(queueItem.getStatus())) {
|
||||||
java.time.LocalDateTime nowLocal = java.time.LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS);
|
java.time.LocalDateTime nowLocal = java.time.LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS);
|
||||||
@@ -343,10 +346,8 @@ public class DoctorStationMainAppServiceImpl implements IDoctorStationMainAppSer
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 写入 div_log 审计日志(独立于队列项,确保每次完诊都生成记录)
|
// 写入 div_log 审计日志(独立于队列项,确保每次完诊都生成记录)
|
||||||
// 防重复:若队列项已是 COMPLETED 状态,说明护士站已处理过并写过分诊日志,不再重复写入
|
// Bug #401:使用更新前记录的原始状态判断,避免自身更新后将状态改为 COMPLETED 导致误判为"已完成"
|
||||||
boolean queueAlreadyCompleted = queueItem != null
|
if (!queueWasAlreadyCompleted) {
|
||||||
&& TriageQueueStatus.COMPLETED.getValue().equals(queueItem.getStatus());
|
|
||||||
if (!queueAlreadyCompleted) {
|
|
||||||
try {
|
try {
|
||||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
DivLog divLog = new DivLog()
|
DivLog divLog = new DivLog()
|
||||||
|
|||||||
Reference in New Issue
Block a user