Fix Bug #401: 门诊完诊审计日志错误:div_log 表中 pool_id 与 slot_id 存值与设计规范不符
根因:queueWasAlreadyCompleted 条件限制导致队列已由分诊台完诊时, 医生站完诊不写 div_log 审计日志,造成审计记录缺失。 数据库12条COMPLETE记录中6条pool_id/slot_id为NULL(50%)。 修复:移除 queueWasAlreadyCompleted 条件限制,确保每次完诊操作 都生成审计日志;保留 queueWasAlreadyCompleted 日志用于排查。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -345,23 +345,25 @@ public class DoctorStationMainAppServiceImpl implements IDoctorStationMainAppSer
|
|||||||
encounterId, tenantId);
|
encounterId, tenantId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 写入 div_log 审计日志(独立于队列项,确保每次完诊都生成记录)
|
// 写入 div_log 审计日志(每次完诊都生成记录,确保审计链路完整)
|
||||||
// Bug #401:使用更新前记录的原始状态判断,避免自身更新后将状态改为 COMPLETED 导致误判为"已完成"
|
// Bug #401:移除 queueWasAlreadyCompleted 条件限制,避免队列已由分诊台完诊时
|
||||||
if (!queueWasAlreadyCompleted) {
|
// 医生站完诊不写日志导致审计记录缺失;同时保留 queueWasAlreadyCompleted 日志用于排查
|
||||||
try {
|
try {
|
||||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||||
DivLog divLog = new DivLog()
|
DivLog divLog = new DivLog()
|
||||||
.setPoolId(divPoolId)
|
.setPoolId(divPoolId)
|
||||||
.setSlotId(divSlotId)
|
.setSlotId(divSlotId)
|
||||||
.setOpUserId(loginUser != null ? loginUser.getUserId() : null)
|
.setOpUserId(loginUser != null ? loginUser.getUserId() : null)
|
||||||
.setAction("COMPLETE")
|
.setAction("COMPLETE")
|
||||||
.setCreateTime(LocalDateTime.now())
|
.setCreateTime(LocalDateTime.now())
|
||||||
.setUpdateAt(LocalDateTime.now())
|
.setUpdateAt(LocalDateTime.now())
|
||||||
.setCreatedAt(LocalDateTime.now());
|
.setCreatedAt(LocalDateTime.now());
|
||||||
divLogService.save(divLog);
|
divLogService.save(divLog);
|
||||||
} catch (Exception e) {
|
if (queueWasAlreadyCompleted) {
|
||||||
log.error("写入div_log审计日志失败", e);
|
log.info("完诊:队列项已由分诊台完诊,医生站补充写入审计日志 encounterId={}", encounterId);
|
||||||
}
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("写入div_log审计日志失败", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. 更新状态、完成时间以及初复诊标识
|
// 4. 更新状态、完成时间以及初复诊标识
|
||||||
|
|||||||
Reference in New Issue
Block a user