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:
wangjian963
2026-03-30 15:53:24 +08:00
5 changed files with 82 additions and 16 deletions

View File

@@ -149,6 +149,14 @@ public interface IConsultationAppService {
* @return 会诊意见列表
*/
List<ConsultationOpinionDto> getConsultationOpinions(String consultationId);
/**
* 根据ID查询会诊申请详情
*
* @param id 会诊申请ID
* @return 会诊申请详情
*/
ConsultationRequestDto getConsultationById(Long id);
}

View File

@@ -186,6 +186,11 @@ public class ConsultationAppServiceImpl implements IConsultationAppService {
wrapper.like(ConsultationRequest::getPatientName, dto.getPatientName());
}
// 会诊ID查询支持模糊匹配
if (StringUtils.hasText(dto.getConsultationId())) {
wrapper.like(ConsultationRequest::getConsultationId, dto.getConsultationId());
}
// 按创建时间倒序排列
wrapper.orderByDesc(ConsultationRequest::getConsultationRequestDate);
@@ -240,6 +245,11 @@ public class ConsultationAppServiceImpl implements IConsultationAppService {
wrapper.like(ConsultationRequest::getPatientName, dto.getPatientName());
}
// 会诊ID查询支持模糊匹配
if (StringUtils.hasText(dto.getConsultationId())) {
wrapper.like(ConsultationRequest::getConsultationId, dto.getConsultationId());
}
// 按创建时间倒序排列
wrapper.orderByDesc(ConsultationRequest::getConsultationRequestDate);
@@ -444,17 +454,6 @@ public class ConsultationAppServiceImpl implements IConsultationAppService {
if (!ConsultationStatusEnum.SUBMITTED.getCode().equals(entity.getConsultationStatus())) {
throw new IllegalArgumentException("只有已提交状态的会诊申请才能取消提交");
}
// 🎯 新增:检查是否有医生已确认或签名
// 即使整体状态还是10部分医生确认/签名),也不允许取消提交
LambdaQueryWrapper<ConsultationInvited> invitedCheckWrapper = new LambdaQueryWrapper<>();
invitedCheckWrapper.eq(ConsultationInvited::getConsultationRequestId, entity.getId())
.ge(ConsultationInvited::getInvitedStatus, ConsultationStatusEnum.CONFIRMED.getCode());
long confirmedOrSignedCount = consultationInvitedMapper.selectCount(invitedCheckWrapper);
if (confirmedOrSignedCount > 0) {
throw new IllegalArgumentException("已有医生确认或签名,无法取消提交");
}
// 取消提交:将状态从"已提交"改回"新开"
entity.setConsultationStatus(ConsultationStatusEnum.NEW.getCode());
entity.setConfirmingPhysician(null);
@@ -735,8 +734,8 @@ public class ConsultationAppServiceImpl implements IConsultationAppService {
}).collect(Collectors.toList());
dto.setInvitedList(invitedDtoList);
// 🎯 如果会诊已确认、已签名或已完成,填充会诊记录信息(从会诊确认表中获取)
// 会诊状态20=已确认30=已签名40=已完成
if (entity.getConsultationStatus() != null &&
@@ -1204,7 +1203,7 @@ public class ConsultationAppServiceImpl implements IConsultationAppService {
// 10=已提交待确认、20=已确认待签名、30=已签名排除40=已完成
LambdaQueryWrapper<ConsultationInvited> invitedWrapper = new LambdaQueryWrapper<>();
invitedWrapper.eq(ConsultationInvited::getInvitedPhysicianId, currentPhysicianId)
.in(ConsultationInvited::getInvitedStatus,
.in(ConsultationInvited::getInvitedStatus,
ConsultationStatusEnum.SUBMITTED.getCode(), // 10-待确认
ConsultationStatusEnum.CONFIRMED.getCode(), // 20-已确认(待签名)
ConsultationStatusEnum.SIGNED.getCode()) // 30-已签名
@@ -1828,5 +1827,26 @@ public class ConsultationAppServiceImpl implements IConsultationAppService {
return new ArrayList<>();
}
}
@Override
public ConsultationRequestDto getConsultationById(Long id) {
try {
if (id == null) {
throw new IllegalArgumentException("会诊申请ID不能为空");
}
// 1. 查询会诊申请
ConsultationRequest request = consultationRequestMapper.selectById(id);
if (request == null) {
throw new IllegalArgumentException("会诊申请不存在ID: " + id);
}
// 2. 转换为DTO并返回
return convertToDto(request);
} catch (Exception e) {
log.error("查询会诊申请详情失败", e);
throw new RuntimeException("查询会诊申请详情失败: " + e.getMessage());
}
}
}

View File

@@ -302,5 +302,21 @@ public class ConsultationController {
return R.fail("获取会诊意见列表失败: " + e.getMessage());
}
}
/**
* 根据ID查询会诊申请详情
*/
@ApiOperation("根据ID查询会诊申请详情")
@GetMapping("/detail/{id}")
public R<ConsultationRequestDto> getConsultationById(
@ApiParam("会诊申请ID") @PathVariable Long id) {
try {
ConsultationRequestDto detail = consultationAppService.getConsultationById(id);
return R.ok(detail);
} catch (Exception e) {
log.error("查询会诊申请详情失败", e);
return R.fail("查询会诊申请详情失败: " + e.getMessage());
}
}
}