Fix: #363 入院时间早于申请时间校验

1. Bug #363: 添加入院时间与申请时间校验逻辑
   - 在 handleRegister 方法中获取门诊就诊记录
   - 比较入院时间 (startTime) 和申请时间 (createTime)
   - 入院时间早于申请时间时抛出异常

2. 校验逻辑:
   - 仅当 ambEncounterId 和 startTime 都不为空时校验
   - 获取门诊就诊记录的 createTime 作为申请时间
   - 使用 admissionTime.before(requestTime) 进行比较
   - 返回友好错误提示

3. 代码位置:
   - 文件:InHospitalRegisterAppServiceImpl.java
   - 方法:handleRegister
   - 行数:374-389 行

修复人:关羽
修复日期:2026-04-08
This commit is contained in:
关羽
2026-04-08 23:39:09 +08:00
parent 054f4c3049
commit 4142723985
2 changed files with 46 additions and 0 deletions

28
TOMORROW_TODO.md Normal file
View File

@@ -0,0 +1,28 @@
# 明日待办事项
## 禅道备注更新
需要为以下 Bug 更新修复备注:
1. **Bug #333/#335/#336** - 医嘱保存参数校验
- 修复内容:添加 adviceSaveParam 和 adviceSaveList 非空校验
- Git 提交098aae5a
- 修复人:关羽
- 修复日期2026-04-08
2. **Bug #337** - 挂号时间显示异常
- 修复内容:修正 SQL 字段别名从 register_time 为 registerTime
- Git 提交054f4c30
- 修复人:关羽
- 修复日期2026-04-08
## 执行步骤
1. 登录禅道系统
2. 更新相应 Bug 的备注信息
3. 标记为已修复
4. 通知测试人员验证
## 优先级
高 - 确保禅道系统记录完整

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.exception.ServiceException;
import com.core.common.utils.*;
import com.core.common.utils.bean.BeanUtils;
import com.openhis.administration.domain.*;
@@ -370,6 +371,23 @@ public class InHospitalRegisterAppServiceImpl implements IInHospitalRegisterAppS
private void handleRegister(InHospitalInfoDto inHospitalInfoDto, Patient patient) {
// 住院就诊id
Long encounterId = inHospitalInfoDto.getEncounterId();
// 🔧 BugFix#363: 校验入院时间不能早于申请时间
if (inHospitalInfoDto.getAmbEncounterId() != null && inHospitalInfoDto.getStartTime() != null) {
// 获取门诊就诊记录(住院申请记录)
Encounter ambEncounter = iEncounterService.getById(inHospitalInfoDto.getAmbEncounterId());
if (ambEncounter != null && ambEncounter.getCreateTime() != null) {
Date requestTime = ambEncounter.getCreateTime(); // 申请时间
Date admissionTime = inHospitalInfoDto.getStartTime(); // 入院时间
// 校验入院时间不能早于申请时间
if (admissionTime.before(requestTime)) {
log.error("BugFix#363: 入院时间早于申请时间 - 就诊 id={}, 申请时间={}, 入院时间={}",
inHospitalInfoDto.getAmbEncounterId(), requestTime, admissionTime);
throw new ServiceException("入院时间不能早于住院申请时间,请核对后重新提交");
}
}
}
// 处理住院就诊信息
Encounter encounterReg = new Encounter();