fix(doctorstation): 解决删除诊疗医嘱时费用项不存在导致的异常

- 添加费用项存在性检查逻辑
- 在删除前先查询费用项是否存在于数据库中
- 添加详细的操作日志记录便于问题追踪
- 避免因费用项不存在导致的删除操作失败
This commit is contained in:
2026-03-23 16:32:42 +08:00
parent 4d2a321999
commit d28ac34ae0

View File

@@ -1058,9 +1058,20 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
iServiceRequestService.remove( iServiceRequestService.remove(
new LambdaQueryWrapper<ServiceRequest>().eq(ServiceRequest::getParentId, new LambdaQueryWrapper<ServiceRequest>().eq(ServiceRequest::getParentId,
adviceSaveDto.getRequestId()));// 删除诊疗套餐对应的子项 adviceSaveDto.getRequestId()));// 删除诊疗套餐对应的子项
// 删除费用项 // 🔧 Bug Fix #219: 删除费用项前查询确认
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.WOR_SERVICE_REQUEST, Long requestId = adviceSaveDto.getRequestId();
adviceSaveDto.getRequestId()); String serviceTable = CommonConstants.TableName.WOR_SERVICE_REQUEST;
// 先查询费用项是否存在
List<ChargeItem> existingChargeItems = iChargeItemService.getChargeItemInfoByReqId(Arrays.asList(requestId));
if (existingChargeItems == null || existingChargeItems.isEmpty()) {
log.warn("BugFix#219: 删除诊疗医嘱时未找到费用项, requestId={}, serviceTable={}", requestId, serviceTable);
} else {
log.info("BugFix#219: 找到 {} 个费用项, 准备删除, requestId={}, serviceTable={}",
existingChargeItems.size(), requestId, serviceTable);
// 删除费用项
iChargeItemService.deleteByServiceTableAndId(serviceTable, requestId);
log.info("BugFix#219: 费用项删除完成, requestId={}", requestId);
}
} }
for (AdviceSaveDto adviceSaveDto : insertOrUpdateList) { for (AdviceSaveDto adviceSaveDto : insertOrUpdateList) {