门诊挂号查询优化
This commit is contained in:
@@ -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("新卡号已被其他患者使用,请更换新卡号");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user