Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	openhis-server-new/openhis-application/src/main/java/com/openhis/web/consultation/appservice/impl/ConsultationAppServiceImpl.java
This commit is contained in:
2026-03-30 15:02:30 +08:00

View File

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