585 [住院医生工作站-手术申请] 手术申请历史列表缺失“手术状态”列,导致医生无法跟踪手术流转进度

This commit is contained in:
wangjian963
2026-06-02 16:02:47 +08:00
parent 578b771c56
commit 734bdc6a0d
8 changed files with 221 additions and 16 deletions

View File

@@ -482,6 +482,13 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
if (!checkReqIds.isEmpty()) {
serviceRequestService.updatePendingReceiveStatus(checkReqIds);
}
// 手术类医嘱执行后,状态改为"已执行"SurgeryAppStatusEnum.EXECUTED=4
List<Long> surgeryReqIds = executedReqs.stream()
.filter(sr -> ActivityDefCategory.PROCEDURE.getValue().equals(sr.getCategoryEnum()))
.map(ServiceRequest::getId).toList();
if (!surgeryReqIds.isEmpty()) {
serviceRequestService.updateSurgeryAppStatus(surgeryReqIds, SurgeryAppStatusEnum.EXECUTED.getCode());
}
}
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[]{"医嘱执行"}));
@@ -726,6 +733,24 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
deviceDispenseService.removeByIds(deviceDispenseList.stream().map(DeviceDispense::getId).toList());
deviceRequestService.removeByIds(deviceDispenseList.stream().map(DeviceDispense::getDeviceReqId).toList());
}
// 手术类医嘱取消执行后,状态回退为"已校对"SurgeryAppStatusEnum.VERIFIED=3
List<Long> surgeryCancelReqIds = adviceExecuteParam.getAdviceExecuteDetailList().stream()
.filter(e -> CommonConstants.TableName.WOR_SERVICE_REQUEST.equals(e.getAdviceTable()))
.map(AdviceExecuteDetailParam::getRequestId)
.filter(Objects::nonNull)
.distinct()
.toList();
if (!surgeryCancelReqIds.isEmpty()) {
List<ServiceRequest> surgeryRequests = serviceRequestService.list(
new LambdaQueryWrapper<ServiceRequest>()
.in(ServiceRequest::getId, surgeryCancelReqIds)
.eq(ServiceRequest::getCategoryEnum, ActivityDefCategory.PROCEDURE.getValue()));
if (!surgeryRequests.isEmpty()) {
serviceRequestService.updateSurgeryAppStatus(
surgeryRequests.stream().map(ServiceRequest::getId).toList(),
SurgeryAppStatusEnum.VERIFIED.getCode());
}
}
return R.ok("取消执行成功,相关汇总领药单已重新生成");
}

View File

@@ -192,9 +192,10 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
// 药品
List<RegAdviceSaveDto> medicineList = regAdviceSaveList.stream()
.filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
// 诊疗活动包含护理adviceType=26
// 诊疗活动包含护理adviceType=26、手术adviceType=6
List<RegAdviceSaveDto> activityList = regAdviceSaveList.stream()
.filter(e -> ItemType.ACTIVITY.getValue().equals(e.getAdviceType())
|| ItemType.SURGERY.getValue().equals(e.getAdviceType())
|| (e.getAdviceType() != null && e.getAdviceType() == 26))
.collect(Collectors.toList());
// 耗材 🔧 Bug #147 修复

View File

@@ -30,6 +30,44 @@
drf.create_time,
ap.NAME AS patient_name,
CASE
-- ========== 手术专用映射 (categoryEnum=24) ==========
-- 手术申请单状态枚举: 1=待签发 2=已签发 3=已校对 4=已执行 5=已安排 6=已完成 10=已作废
WHEN EXISTS (
SELECT 1 FROM wor_service_request ws
WHERE ws.prescription_no = drf.prescription_no AND ws.delete_flag = '0'
AND ws.category_enum = 24 AND ws.status_enum = 10
) THEN 10
WHEN EXISTS (
SELECT 1 FROM wor_service_request ws
WHERE ws.prescription_no = drf.prescription_no AND ws.delete_flag = '0'
AND ws.category_enum = 24 AND ws.status_enum = 6
) THEN 6
WHEN EXISTS (
SELECT 1 FROM wor_service_request ws
WHERE ws.prescription_no = drf.prescription_no AND ws.delete_flag = '0'
AND ws.category_enum = 24 AND ws.status_enum = 5
) THEN 5
WHEN EXISTS (
SELECT 1 FROM wor_service_request ws
WHERE ws.prescription_no = drf.prescription_no AND ws.delete_flag = '0'
AND ws.category_enum = 24 AND ws.status_enum = 4
) THEN 4
WHEN EXISTS (
SELECT 1 FROM wor_service_request ws
WHERE ws.prescription_no = drf.prescription_no AND ws.delete_flag = '0'
AND ws.category_enum = 24 AND ws.status_enum = 3
) THEN 3
WHEN EXISTS (
SELECT 1 FROM wor_service_request ws
WHERE ws.prescription_no = drf.prescription_no AND ws.delete_flag = '0'
AND ws.category_enum = 24 AND ws.status_enum = 2
) THEN 2
WHEN EXISTS (
SELECT 1 FROM wor_service_request ws
WHERE ws.prescription_no = drf.prescription_no AND ws.delete_flag = '0'
AND ws.category_enum = 24 AND ws.status_enum = 1
) THEN 1
-- ========== 通用映射 (非手术类型: 检查/检验/药品/输血) ==========
WHEN EXISTS (
SELECT 1 FROM wor_service_request ws
WHERE ws.prescription_no = drf.prescription_no AND ws.delete_flag = '0'