fix(#613): 请修复 Bug #613:【医嘱校对/住院医生工作站】医嘱“退回”流程缺失反馈机制:护士端退回无原因录入,医生端缺失原因显示

根因:
- Bug #请修复 Bug #613 存在的问题

修复:
- 后端修复完成。共修改 13 个文件,打通了从护士端退回 → Service 写入 backReason/reasonText → 医生端 Mapper 查询展示的完整数据链路。编译验证通过。
This commit is contained in:
2026-06-02 02:32:24 +08:00
parent 6dc2a715c8
commit 920752d36b
13 changed files with 58 additions and 12 deletions

View File

@@ -36,4 +36,7 @@ public class PerformInfoDto {
/** 分组id */
@JsonSerialize(using = ToStringSerializer.class)
private Long groupId;
/** 退回原因 */
private String backReason;
}

View File

@@ -2286,7 +2286,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
log.info("BugFix: signOffAdvice - 签退所有请求,状态改为待签发, requestIdList={}", requestIdList);
// 尝试签退药品请求(只有存在的才会更新)
iMedicationRequestService.updateDraftStatusBatch(requestIdList, null, null);
iMedicationRequestService.updateDraftStatusBatch(requestIdList, null, null, null);
// 尝试签退耗材请求(只有存在的才会更新)
iDeviceRequestService.updateDraftStatusBatch(requestIdList);
// 尝试签退诊疗请求(只有存在的才会更新)

View File

@@ -121,6 +121,11 @@ public class RequestBaseDto {
* 请求状态
*/
private Integer statusEnum;
/**
* 退回原因
*/
private String reasonText;
private String statusEnum_enumText;
/**

View File

@@ -58,6 +58,8 @@ import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.*;
import java.util.*;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -405,15 +407,21 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
}
Long practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
Date checkDate = new Date();
// 从请求中提取退回原因(所有项目共享同一原因)
String backReason = performInfoList.stream()
.map(PerformInfoDto::getBackReason)
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
if (!serviceRequestList.isEmpty()) {
// 更新服务请求状态待发送
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, "退回成功");
}

View File

@@ -256,7 +256,7 @@ public class OutpatientInfusionAppServiceImpl implements IOutpatientInfusionAppS
}
boolean result = serviceRequestService.updateCancelledStatus(serviceReqId, now, practitionerId, orgId);
// 更新主服务请求状态为待执行
serviceRequestService.updateDraftStatus(List.of(serviceRequest.getBasedOnId()), null, null);
serviceRequestService.updateDraftStatus(List.of(serviceRequest.getBasedOnId()), null, null, null);
if (result) {
// 判断是否全部取消执行
boolean exists = serviceRequestMapper.exists(new LambdaQueryWrapper<ServiceRequest>()

View File

@@ -1016,7 +1016,7 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
}
if (!medicineRequestIds.isEmpty()) {
// 根据请求id更新请求状态
iMedicationRequestService.updateDraftStatusBatch(medicineRequestIds, null, null);
iMedicationRequestService.updateDraftStatusBatch(medicineRequestIds, null, null, null);
}
if (!activityRequestIds.isEmpty()) {
// 根据请求id更新请求状态

View File

@@ -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'
@@ -637,6 +639,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'
@@ -691,6 +694,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'
@@ -747,6 +751,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
@@ -926,4 +931,4 @@
ORDER BY t1.ID, t1.name ASC, t2.ID ASC
</select>
</mapper>
</mapper>