Fix Bug #516: [住院医生站-临床医嘱-检验申请] 检验申请单手动填写的"发往科室"与生成的医嘱执行科室不一致

根因: 前端 projectWithDepartment 函数缺少 type 参数声明,导致用户手动选择的发往科室被清空;后端完全忽略前端传来的 positionId,始终使用配置表中的默认科室。
修复: 1) 前端添加 type 参数 + 提交前保存用户选择并在校验后恢复;2) 后端优先使用前端 positionId,配置表仅作为兜底。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
华佗
2026-05-17 13:15:08 +08:00
parent 25477dc6f0
commit 838f717df4
2 changed files with 14 additions and 6 deletions

View File

@@ -162,11 +162,15 @@ public class RequestFormManageAppServiceImpl implements IRequestFormManageAppSer
serviceRequest.setEncounterId(encounterId); // 就诊id
serviceRequest.setAuthoredTime(curDate); // 请求签发时间
Long positionId = activityOrganizationConfig.stream()
.filter(dto -> activitySaveDto.getAdviceDefinitionId().equals(dto.getActivityDefinitionId()))
.map(ActivityOrganizationConfigDto::getOrganizationId).findFirst().orElse(null);
// 优先使用前端传来的 positionId用户手动选择的发往科室未传时从配置表查找
Long positionId = activitySaveDto.getPositionId();
if (positionId == null) {
throw new ServiceException(activitySaveDto.getAdviceDefinitionName() + "未配置当前时间段的执行科室");
positionId = activityOrganizationConfig.stream()
.filter(dto -> activitySaveDto.getAdviceDefinitionId().equals(dto.getActivityDefinitionId()))
.map(ActivityOrganizationConfigDto::getOrganizationId).findFirst().orElse(null);
if (positionId == null) {
throw new ServiceException(activitySaveDto.getAdviceDefinitionName() + "未配置当前时间段的执行科室");
}
}
serviceRequest.setOrgId(positionId); // 执行科室