门诊挂号查询优化

This commit is contained in:
2025-11-24 09:39:23 +08:00
parent c3734f921c
commit 97a29a31c5
2 changed files with 23 additions and 10 deletions

View File

@@ -12,6 +12,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.List;
/** /**
* 患者换卡服务实现类 * 患者换卡服务实现类
* *
@@ -43,8 +45,8 @@ public class PatientCardRenewalServiceImpl implements PatientCardRenewalService
// 2. 检查新卡号是否已被使用 // 2. 检查新卡号是否已被使用
LambdaQueryWrapper<PatientIdentifier> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PatientIdentifier> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PatientIdentifier::getIdentifierNo, request.getNewCardNo()); queryWrapper.eq(PatientIdentifier::getIdentifierNo, request.getNewCardNo());
PatientIdentifier existingIdentifier = patientIdentifierService.getOne(queryWrapper); List<PatientIdentifier> existingIdentifiers = patientIdentifierService.list(queryWrapper);
if (existingIdentifier != null) { if (existingIdentifiers != null && !existingIdentifiers.isEmpty()) {
throw new IllegalArgumentException("新卡号已被其他患者使用,请更换新卡号"); throw new IllegalArgumentException("新卡号已被其他患者使用,请更换新卡号");
} }

View File

@@ -98,10 +98,20 @@ public class OutpatientRegistrationAppServiceImpl implements IOutpatientRegistra
queryWrapper.orderByDesc("update_time"); queryWrapper.orderByDesc("update_time");
// 通过证件号匹配 patient // 通过证件号匹配 patient
if (StringUtils.isNotEmpty(searchKey)) { if (StringUtils.isNotEmpty(searchKey)) {
PatientIdentifier patientIdentifier = patientIdentifierService List<PatientIdentifier> patientIdentifiers = patientIdentifierService
.getOne(new LambdaQueryWrapper<PatientIdentifier>().eq(PatientIdentifier::getIdentifierNo, searchKey)); .list(new LambdaQueryWrapper<PatientIdentifier>().eq(PatientIdentifier::getIdentifierNo, searchKey));
if (patientIdentifier != null) { if (patientIdentifiers != null && !patientIdentifiers.isEmpty()) {
queryWrapper.or(q -> q.eq("id", patientIdentifier.getPatientId())); // 如果有多个匹配结果,将它们全部添加到查询条件中
if (patientIdentifiers.size() == 1) {
// 单个结果时直接添加条件
queryWrapper.or(q -> q.eq("id", patientIdentifiers.get(0).getPatientId()));
} else {
// 多个结果时使用in条件
List<Long> patientIds = patientIdentifiers.stream()
.map(PatientIdentifier::getPatientId)
.collect(Collectors.toList());
queryWrapper.or(q -> q.in("id", patientIds));
}
} }
} }
// 患者信息 // 患者信息
@@ -120,10 +130,11 @@ public class OutpatientRegistrationAppServiceImpl implements IOutpatientRegistra
e.setFirstEnum_enumText(patientIdList.contains(e.getId()) ? EncounterType.FOLLOW_UP.getInfo() e.setFirstEnum_enumText(patientIdList.contains(e.getId()) ? EncounterType.FOLLOW_UP.getInfo()
: EncounterType.INITIAL.getInfo()); : EncounterType.INITIAL.getInfo());
// 患者标识 // 患者标识
PatientIdentifier patientIdentifier = patientIdentifierService List<PatientIdentifier> patientIdentifiers = patientIdentifierService
.getOne(new LambdaQueryWrapper<PatientIdentifier>().eq(PatientIdentifier::getPatientId, e.getId())); .list(new LambdaQueryWrapper<PatientIdentifier>().eq(PatientIdentifier::getPatientId, e.getId()));
if (patientIdentifier != null) { if (patientIdentifiers != null && !patientIdentifiers.isEmpty()) {
e.setIdentifierNo(patientIdentifier.getIdentifierNo()); // 取第一个标识号,如果需要可以根据业务需求选择其他逻辑
e.setIdentifierNo(patientIdentifiers.get(0).getIdentifierNo());
} }
}); });