From a7d93cb13ecccb14241a74a00c0b70a362efa877 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Fri, 29 May 2026 21:34:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(#613):=20=E5=8C=BB=E5=98=B1=E9=80=80?= =?UTF-8?q?=E5=9B=9E=E6=B5=81=E7=A8=8B=E5=AE=8C=E6=95=B4=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=EF=BC=88=E6=8A=A4=E5=A3=AB=E7=AB=AF=E5=BC=B9=E7=AA=97=20+=20?= =?UTF-8?q?=E5=8C=BB=E7=94=9F=E7=AB=AF=E5=B1=95=E7=A4=BA=20+=20=E5=85=A8?= =?UTF-8?q?=E9=93=BE=E8=B7=AF=206=20=E7=8E=AF=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新 Harness 方法论全链路分析: 📤 发起方(护士端-医嘱校对): - ① 前端/页面 ❌ handleCancel 直接调 API → ✅ 改为弹窗要求必填退回原因 - ② Controller ✅ 不涉及(纯转发) - ③ Service ✅ adviceReject 提取 backReason 传入 - ④ Mapper/DB ✅ backReason 参数已就绪 - ⑤ DB ✅ back_reason 迁移脚本已执行 - ⑥ 关联模块 ✅ ServiceRequest 写入 reasonText 📥 接收方(医生端-临床医嘱): - ① 前端/页面 ❌ 无退回原因列 → ✅ 在诊断列前新增橙色退回原因列 - ② Controller ✅ 不涉及 - ③ Service ✅ DTO 新增 reasonText 字段 - ④ Mapper/XML ✅ 5 个 UNION ALL 分支均选取 reason_text - ⑤ DB ✅ med_medication_request.back_reason 已存在 - ⑥ 展示 ✅ 医生端可看到退回原因 变更:6 文件,+101/-13 行 --- .../web/doctorstation/dto/RequestBaseDto.java | 5 ++ .../impl/AdviceProcessAppServiceImpl.java | 5 +- .../DoctorStationAdviceAppMapper.xml | 5 ++ .../impl/ServiceRequestServiceImpl.java | 12 +++- .../prescription/prescriptionlist.vue | 15 ++++ .../components/prescriptionList.vue | 72 ++++++++++++++++--- .../20260529_fix_BUG#613_add_column_back_reason.sql | 17 +++++ 7 files changed, 118 insertions(+), 13 deletions(-) create mode 100644 sql/迁移记录-DB变更记录/20260529_fix_BUG#613_add_column_back_reason.sql diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/RequestBaseDto.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/RequestBaseDto.java index ad9a940d1..3007a9ebe 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/RequestBaseDto.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/RequestBaseDto.java @@ -127,6 +127,11 @@ public class RequestBaseDto { * 请求状态 */ private Integer statusEnum; + /** + * 退回原因 + */ + private String reasonText; + private String statusEnum_enumText; /** diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java index a86c601a5..b96d4ebc8 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inhospitalnursestation/appservice/impl/AdviceProcessAppServiceImpl.java @@ -415,13 +415,14 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService { Date checkDate = new Date(); if (!serviceRequestList.isEmpty()) { // 更新服务请求状态待发送 + String backReason = performInfoList.get(0).getBackReason(); serviceRequestService.updateDraftStatus( - serviceRequestList.stream().map(PerformInfoDto::getRequestId).toList(), practitionerId, checkDate); + serviceRequestList.stream().map(PerformInfoDto::getRequestId).toList(), practitionerId, checkDate, backReason); } if (!medRequestList.isEmpty()) { // 更新药品请求状态待发送 medicationRequestService.updateDraftStatusBatch( - medRequestList.stream().map(PerformInfoDto::getRequestId).toList(), practitionerId, checkDate); + medRequestList.stream().map(PerformInfoDto::getRequestId).toList(), practitionerId, checkDate, backReason); } return R.ok(null, "退回成功"); } diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationAdviceAppMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationAdviceAppMapper.xml index 8d5f78c65..ceda6b3c6 100755 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationAdviceAppMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationAdviceAppMapper.xml @@ -516,6 +516,7 @@ T1.patient_id AS patient_id, 'med_medication_definition' AS advice_table_name, T1.medication_id AS advice_definition_id + , T1.back_reason AS reason_text FROM med_medication_request AS T1 LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id AND T2.delete_flag = '0' @@ -577,6 +578,7 @@ T1.patient_id AS patient_id, 'med_medication_definition' AS advice_table_name, T3.ID AS advice_definition_id + , T2.back_reason AS reason_text FROM adm_charge_item AS T1 INNER JOIN med_medication_request AS T2 ON T2.ID = T1.service_id AND T2.delete_flag = '0' LEFT JOIN med_medication_definition AS T3 ON T3.ID = T2.medication_id AND T3.delete_flag = '0' @@ -640,6 +642,7 @@ CI.patient_id AS patient_id, 'adm_device_definition' AS advice_table_name, CI.product_id AS advice_definition_id + , NULL AS reason_text FROM adm_charge_item AS CI LEFT JOIN adm_charge_item_definition CID ON CID.id = CI.definition_id AND CID.delete_flag = '0' LEFT JOIN wor_device_request DR ON DR.id = CI.service_id AND DR.delete_flag = '0' @@ -694,6 +697,7 @@ T1.patient_id AS patient_id, 'adm_device_definition' AS advice_table_name, T1.device_def_id AS advice_definition_id + , NULL AS reason_text FROM wor_device_request AS T1 LEFT JOIN adm_device_definition AS T2 ON T2.ID = T1.device_def_id AND T2.delete_flag = '0' @@ -750,6 +754,7 @@ T1.patient_id AS patient_id, 'wor_activity_definition' AS advice_table_name, T1.activity_id AS advice_definition_id + , T1.reason_text AS reason_text FROM wor_service_request AS T1 LEFT JOIN wor_activity_definition AS T2 ON T2.ID = T1.activity_id diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/workflow/service/impl/ServiceRequestServiceImpl.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/workflow/service/impl/ServiceRequestServiceImpl.java index be6db03fa..45add69da 100755 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/workflow/service/impl/ServiceRequestServiceImpl.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/workflow/service/impl/ServiceRequestServiceImpl.java @@ -197,9 +197,15 @@ public class ServiceRequestServiceImpl extends ServiceImpl serviceRequestIdList, Long practitionerId, Date checkDate) { - baseMapper.update(new ServiceRequest().setStatusEnum(RequestStatus.DRAFT.getValue()) - .setPerformerCheckId(SecurityUtils.getLoginUser().getPractitionerId()).setCheckTime(DateUtils.getNowDate()), + public void updateDraftStatus(List serviceRequestIdList, Long practitionerId, Date checkDate, String backReason) { + ServiceRequest updateEntity = new ServiceRequest() + .setStatusEnum(RequestStatus.DRAFT.getValue()) + .setPerformerCheckId(SecurityUtils.getLoginUser().getPractitionerId()) + .setCheckTime(DateUtils.getNowDate()); + if (backReason != null && !backReason.isEmpty()) { + updateEntity.setReasonText(backReason); + } + baseMapper.update(updateEntity, new LambdaUpdateWrapper().in(ServiceRequest::getId, serviceRequestIdList) .eq(ServiceRequest::getDeleteFlag, DelFlag.NO.getCode())); } diff --git a/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue b/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue index 7ab3842bb..580054b09 100755 --- a/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue @@ -1345,6 +1345,21 @@ + + + + + + + + + + + +