From 92511c277791f8eeb94b0819982d5efb5d0e45a6 Mon Sep 17 00:00:00 2001 From: wangjian963 <15215920+aprilry@user.noreply.gitee.com> Date: Mon, 30 Mar 2026 15:47:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(consultation):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BC=9A=E8=AF=8A=E5=8F=96=E6=B6=88=E6=8F=90=E4=BA=A4=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=B9=B6=E4=BC=98=E5=8C=96=E5=8C=BB=E7=94=9F=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=98=BE=E7=A4=BA=20=E6=96=B0=E5=A2=9E=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=8C=BB=E7=94=9F=E7=A1=AE=E8=AE=A4/=E7=AD=BE?= =?UTF-8?q?=E5=90=8D=E7=8A=B6=E6=80=81=E7=9A=84=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E9=98=B2=E6=AD=A2=E5=B7=B2=E7=A1=AE=E8=AE=A4/=E7=AD=BE?= =?UTF-8?q?=E5=90=8D=E7=9A=84=E4=BC=9A=E8=AF=8A=E8=A2=AB=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=20=E4=BC=98=E5=8C=96=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E5=8F=82=E4=B8=8E=E5=8C=BB=E7=94=9F=E5=88=97=E8=A1=A8=E7=9A=84?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=EF=BC=8C=E5=8F=AA=E6=98=BE=E7=A4=BA=E5=B7=B2?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E6=88=96=E5=B7=B2=E7=AD=BE=E5=90=8D=E7=9A=84?= =?UTF-8?q?=E5=8C=BB=E7=94=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ConsultationAppServiceImpl.java | 28 +++++---- .../doctorstation/components/consultation.vue | 58 ++++++++++++++----- 2 files changed, 59 insertions(+), 27 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/consultation/appservice/impl/ConsultationAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/consultation/appservice/impl/ConsultationAppServiceImpl.java index 15632f7a..71b35cc3 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/consultation/appservice/impl/ConsultationAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/consultation/appservice/impl/ConsultationAppServiceImpl.java @@ -444,6 +444,17 @@ public class ConsultationAppServiceImpl implements IConsultationAppService { if (!ConsultationStatusEnum.SUBMITTED.getCode().equals(entity.getConsultationStatus())) { throw new IllegalArgumentException("只有已提交状态的会诊申请才能取消提交"); } + + // 🎯 新增:检查是否有医生已确认或签名 + // 即使整体状态还是10(部分医生确认/签名),也不允许取消提交 + LambdaQueryWrapper 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); @@ -724,8 +735,8 @@ public class ConsultationAppServiceImpl implements IConsultationAppService { }).collect(Collectors.toList()); dto.setInvitedList(invitedDtoList); - - + + // 🎯 如果会诊已确认、已签名或已完成,填充会诊记录信息(从会诊确认表中获取) // 会诊状态:20=已确认,30=已签名,40=已完成 if (entity.getConsultationStatus() != null && @@ -785,11 +796,6 @@ public class ConsultationAppServiceImpl implements IConsultationAppService { confirmedAndSignedPhysicians.size(), signedPhysicians.size()); } } - - log.info("填充会诊记录信息,已确认和已签名医生数:{},已签名医生数:{}", - confirmedAndSignedPhysicians.size(), signedPhysicians.size()); - } - } } } @@ -1198,7 +1204,7 @@ public class ConsultationAppServiceImpl implements IConsultationAppService { // 10=已提交(待确认)、20=已确认(待签名)、30=已签名,排除40=已完成 LambdaQueryWrapper 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-已签名 @@ -1312,9 +1318,9 @@ public class ConsultationAppServiceImpl implements IConsultationAppService { // 4. 更新邀请记录(存储会诊意见) // 格式:科室-医生:意见内容 - String formattedOpinion = String.format("%s-%s:%s", - currentDeptName, - currentPhysicianName, + String formattedOpinion = String.format("%s-%s:%s", + currentDeptName, + currentPhysicianName, dto.getConsultationOpinion()); invited.setInvitedStatus(ConsultationStatusEnum.CONFIRMED.getCode()); // 已确认 diff --git a/openhis-ui-vue3/src/views/doctorstation/components/consultation.vue b/openhis-ui-vue3/src/views/doctorstation/components/consultation.vue index df84d51f..5b18a650 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/consultation.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/consultation.vue @@ -57,11 +57,18 @@ -