fix(consultation): 修复会诊确认参加医师字段取值逻辑 - Bug #266
**问题修复:** - 字段标签:将'会诊邀请参加医师'改为'会诊确认参加医师' - 后端取值:从consultation_confirmation表的confirming_physicians字段取值 - 前端显示:解析JSON格式并格式化为'科室-姓名'的友好显示 **技术变更:** - ConsultationAppServiceImpl.java: 修改convertToDto(),查询确认表获取字段值 - consultation.vue: 添加JSON解析逻辑,格式化显示医师列表
This commit is contained in:
@@ -725,47 +725,45 @@ public class ConsultationAppServiceImpl implements IConsultationAppService {
|
||||
|
||||
dto.setInvitedList(invitedDtoList);
|
||||
|
||||
// 🎯 如果会诊已完成或已签名,填充会诊记录信息(从已签名的医生中获取)
|
||||
// 🎯 如果会诊已完成或已签名,填充会诊记录信息(从会诊确认表中获取)
|
||||
if (entity.getConsultationStatus() != null &&
|
||||
(entity.getConsultationStatus() == ConsultationStatusEnum.SIGNED.getCode() ||
|
||||
entity.getConsultationStatus() == ConsultationStatusEnum.COMPLETED.getCode())) {
|
||||
|
||||
// 查询所有已确认和已签名的医生(invited_status >= 2)
|
||||
// invited_status: 1-已提交,2-已确认,3-已签名
|
||||
List<ConsultationInvited> confirmedAndSignedPhysicians = invitedList.stream()
|
||||
.filter(inv -> inv.getInvitedStatus() != null && inv.getInvitedStatus() >= 2)
|
||||
.collect(Collectors.toList());
|
||||
// 查询会诊确认记录
|
||||
LambdaQueryWrapper<ConsultationConfirmation> confirmWrapper = new LambdaQueryWrapper<>();
|
||||
confirmWrapper.eq(ConsultationConfirmation::getConsultationRequestId, entity.getId());
|
||||
ConsultationConfirmation confirmation = consultationConfirmationMapper.selectOne(confirmWrapper);
|
||||
|
||||
// 查询所有已签名的医生(invited_status = 3)
|
||||
List<ConsultationInvited> signedPhysicians = invitedList.stream()
|
||||
.filter(inv -> inv.getInvitedStatus() != null && inv.getInvitedStatus() >= 3)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!confirmedAndSignedPhysicians.isEmpty()) {
|
||||
// 1. 会诊邀请参加医师:拼接所有已确认和已签名医生的"科室 - 姓名"
|
||||
String invitedPhysiciansText = confirmedAndSignedPhysicians.stream()
|
||||
.map(inv -> inv.getInvitedDepartmentName() + "-" + inv.getInvitedPhysicianName())
|
||||
.collect(Collectors.joining("、"));
|
||||
dto.setInvitedPhysiciansText(invitedPhysiciansText);
|
||||
|
||||
// 2. 会诊意见:汇总所有已签名医生的意见(只有已签名医生才能填写意见)
|
||||
if (!signedPhysicians.isEmpty()) {
|
||||
String consultationOpinion = signedPhysicians.stream()
|
||||
.filter(inv -> StringUtils.hasText(inv.getConfirmOpinion()))
|
||||
.map(ConsultationInvited::getConfirmOpinion)
|
||||
.collect(Collectors.joining("\n"));
|
||||
dto.setConsultationOpinion(consultationOpinion);
|
||||
|
||||
// 3. 所属医生、代表科室、签名医生、签名时间:使用第一个签名的医生
|
||||
ConsultationInvited firstSigned = signedPhysicians.get(0);
|
||||
dto.setAttendingPhysician(firstSigned.getInvitedPhysicianName());
|
||||
dto.setRepresentDepartment(firstSigned.getInvitedDepartmentName());
|
||||
dto.setSignPhysician(firstSigned.getInvitedPhysicianName());
|
||||
dto.setSignTime(firstSigned.getSignatureTime());
|
||||
|
||||
log.info("填充会诊记录信息,已确认和已签名医生数:{},已签名医生数:{}",
|
||||
confirmedAndSignedPhysicians.size(), signedPhysicians.size());
|
||||
if (confirmation != null) {
|
||||
// 1. 会诊确认参加医师:从确认表的confirming_physicians字段取值
|
||||
if (StringUtils.hasText(confirmation.getConfirmingPhysicians())) {
|
||||
dto.setInvitedPhysiciansText(confirmation.getConfirmingPhysicians());
|
||||
log.info("从会诊确认表获取confirmingPhysicians: {}", confirmation.getConfirmingPhysicians());
|
||||
}
|
||||
|
||||
// 2. 会诊意见:从确认表取值
|
||||
if (StringUtils.hasText(confirmation.getConsultationOpinion())) {
|
||||
dto.setConsultationOpinion(confirmation.getConsultationOpinion());
|
||||
}
|
||||
|
||||
// 3. 签名医生信息:从确认表取值
|
||||
dto.setSignPhysician(confirmation.getSignature());
|
||||
dto.setSignTime(confirmation.getSignatureDate());
|
||||
}
|
||||
|
||||
// 4. 所属医生、代表科室:使用第一个签名的医生(向后兼容)
|
||||
if (!signedPhysicians.isEmpty()) {
|
||||
ConsultationInvited firstSigned = signedPhysicians.get(0);
|
||||
dto.setAttendingPhysician(firstSigned.getInvitedPhysicianName());
|
||||
dto.setRepresentDepartment(firstSigned.getInvitedDepartmentName());
|
||||
|
||||
log.info("填充会诊记录信息,已签名医生数:{}", signedPhysicians.size());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user