fix(consultation): 修复会诊确认参加医师字段取值逻辑 - Bug #266
- 从consultation_confirmation表的confirming_physicians字段取值 - 添加备用逻辑:如果确认表无数据则从invitedList拼接 - 会诊意见同样优先从确认表取值
This commit is contained in:
@@ -726,45 +726,64 @@ public class ConsultationAppServiceImpl implements IConsultationAppService {
|
|||||||
dto.setInvitedList(invitedDtoList);
|
dto.setInvitedList(invitedDtoList);
|
||||||
|
|
||||||
|
|
||||||
// 🎯 如果会诊已确认、已签名或已完成,填充会诊记录信息
|
// 🎯 如果会诊已确认、已签名或已完成,填充会诊记录信息(从会诊确认表中获取)
|
||||||
// 会诊状态:20=已确认,30=已签名,40=已完成
|
// 会诊状态:20=已确认,30=已签名,40=已完成
|
||||||
if (entity.getConsultationStatus() != null &&
|
if (entity.getConsultationStatus() != null &&
|
||||||
entity.getConsultationStatus() >= ConsultationStatusEnum.CONFIRMED.getCode()) {
|
entity.getConsultationStatus() >= ConsultationStatusEnum.CONFIRMED.getCode()) {
|
||||||
|
|
||||||
// 查询所有已确认和已签名的医生(invited_status >= 20)
|
// 查询会诊确认记录
|
||||||
|
LambdaQueryWrapper<ConsultationConfirmation> confirmWrapper = new LambdaQueryWrapper<>();
|
||||||
|
confirmWrapper.eq(ConsultationConfirmation::getConsultationRequestId, entity.getId());
|
||||||
|
ConsultationConfirmation confirmation = consultationConfirmationMapper.selectOne(confirmWrapper);
|
||||||
|
|
||||||
|
// 查询所有已确认和已签名的医生(invited_status >= 2)
|
||||||
List<ConsultationInvited> confirmedAndSignedPhysicians = invitedList.stream()
|
List<ConsultationInvited> confirmedAndSignedPhysicians = invitedList.stream()
|
||||||
.filter(inv -> inv.getInvitedStatus() != null && inv.getInvitedStatus() >= ConsultationStatusEnum.CONFIRMED.getCode())
|
.filter(inv -> inv.getInvitedStatus() != null && inv.getInvitedStatus() >= 2)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
// 查询所有已签名的医生(invited_status >= 30)
|
// 查询所有已签名的医生(invited_status >= 3)
|
||||||
List<ConsultationInvited> signedPhysicians = invitedList.stream()
|
List<ConsultationInvited> signedPhysicians = invitedList.stream()
|
||||||
.filter(inv -> inv.getInvitedStatus() != null && inv.getInvitedStatus() >= ConsultationStatusEnum.SIGNED.getCode())
|
.filter(inv -> inv.getInvitedStatus() != null && inv.getInvitedStatus() >= 3)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
if (!confirmedAndSignedPhysicians.isEmpty()) {
|
if (confirmation != null) {
|
||||||
// 1. 会诊确认参加医师:拼接所有已确认和已签名医生的"科室 - 姓名"
|
// 1. 会诊确认参加医师:优先从确认表的confirming_physicians字段取值
|
||||||
|
if (StringUtils.hasText(confirmation.getConfirmingPhysicians())) {
|
||||||
|
dto.setInvitedPhysiciansText(confirmation.getConfirmingPhysicians());
|
||||||
|
} else if (!confirmedAndSignedPhysicians.isEmpty()) {
|
||||||
|
// 备用:从invitedList拼接
|
||||||
String invitedPhysiciansText = confirmedAndSignedPhysicians.stream()
|
String invitedPhysiciansText = confirmedAndSignedPhysicians.stream()
|
||||||
.map(inv -> inv.getInvitedDepartmentName() + "-" + inv.getInvitedPhysicianName())
|
.map(inv -> inv.getInvitedDepartmentName() + "-" + inv.getInvitedPhysicianName())
|
||||||
.collect(Collectors.joining("、"));
|
.collect(Collectors.joining("、"));
|
||||||
dto.setInvitedPhysiciansText(invitedPhysiciansText);
|
dto.setInvitedPhysiciansText(invitedPhysiciansText);
|
||||||
|
}
|
||||||
|
|
||||||
// 2. 会诊意见:汇总所有已确认医生的意见
|
// 2. 会诊意见:优先从确认表取值
|
||||||
|
if (StringUtils.hasText(confirmation.getConsultationOpinion())) {
|
||||||
|
dto.setConsultationOpinion(confirmation.getConsultationOpinion());
|
||||||
|
} else if (!confirmedAndSignedPhysicians.isEmpty()) {
|
||||||
|
// 备用:从invitedList汇总
|
||||||
String consultationOpinion = confirmedAndSignedPhysicians.stream()
|
String consultationOpinion = confirmedAndSignedPhysicians.stream()
|
||||||
.filter(inv -> StringUtils.hasText(inv.getConfirmOpinion()))
|
.filter(inv -> StringUtils.hasText(inv.getConfirmOpinion()))
|
||||||
.map(ConsultationInvited::getConfirmOpinion)
|
.map(ConsultationInvited::getConfirmOpinion)
|
||||||
.collect(Collectors.joining("\n"));
|
.collect(Collectors.joining("\n"));
|
||||||
dto.setConsultationOpinion(consultationOpinion);
|
dto.setConsultationOpinion(consultationOpinion);
|
||||||
|
}
|
||||||
|
|
||||||
// 3. 所属医生、代表科室:使用第一个确认的医生
|
// 3. 签名医生、签名时间:从确认表取值
|
||||||
|
dto.setSignPhysician(confirmation.getSignature());
|
||||||
|
dto.setSignTime(confirmation.getSignatureDate());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. 所属医生、代表科室:使用第一个确认的医生(向后兼容)
|
||||||
|
if (!confirmedAndSignedPhysicians.isEmpty()) {
|
||||||
ConsultationInvited firstConfirmed = confirmedAndSignedPhysicians.get(0);
|
ConsultationInvited firstConfirmed = confirmedAndSignedPhysicians.get(0);
|
||||||
dto.setAttendingPhysician(firstConfirmed.getInvitedPhysicianName());
|
dto.setAttendingPhysician(firstConfirmed.getInvitedPhysicianName());
|
||||||
dto.setRepresentDepartment(firstConfirmed.getInvitedDepartmentName());
|
dto.setRepresentDepartment(firstConfirmed.getInvitedDepartmentName());
|
||||||
|
|
||||||
// 4. 签名医生、签名时间:只有已签名医生才有
|
log.info("填充会诊记录信息,已确认和已签名医生数:{},已签名医生数:{}",
|
||||||
if (!signedPhysicians.isEmpty()) {
|
confirmedAndSignedPhysicians.size(), signedPhysicians.size());
|
||||||
ConsultationInvited firstSigned = signedPhysicians.get(0);
|
}
|
||||||
dto.setSignPhysician(firstSigned.getInvitedPhysicianName());
|
|
||||||
dto.setSignTime(firstSigned.getSignatureTime());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("填充会诊记录信息,已确认和已签名医生数:{},已签名医生数:{}",
|
log.info("填充会诊记录信息,已确认和已签名医生数:{},已签名医生数:{}",
|
||||||
|
|||||||
Reference in New Issue
Block a user