diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgeryAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgeryAppServiceImpl.java index dbe9bba32..c1c2b3658 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgeryAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgeryAppServiceImpl.java @@ -507,6 +507,7 @@ public class SurgeryAppServiceImpl implements ISurgeryAppService { * @return 结果 */ @Override + @Transactional(rollbackFor = Exception.class) public R deleteSurgery(Long id) { // 校验手术是否存在 Surgery existSurgery = surgeryService.getById(id); @@ -519,6 +520,28 @@ public class SurgeryAppServiceImpl implements ISurgeryAppService { return R.fail("已完成的手术不能删除"); } + // 级联删除关联数据 + String surgeryNo = existSurgery.getSurgeryNo(); + + // 1. 删除手术医嘱(wor_service_request) + LambdaQueryWrapper serviceRequestWrapper = new LambdaQueryWrapper<>(); + serviceRequestWrapper.eq(ServiceRequest::getActivityId, id); + serviceRequestService.remove(serviceRequestWrapper); + log.info("删除手术关联的医嘱 - surgeryId: {}, surgeryNo: {}", id, surgeryNo); + + // 2. 删除收费项目(fin_charge_item) + LambdaQueryWrapper chargeItemWrapper = new LambdaQueryWrapper<>(); + chargeItemWrapper.eq(ChargeItem::getProductId, id) + .eq(ChargeItem::getProductTable, "cli_surgery"); + chargeItemService.remove(chargeItemWrapper); + log.info("删除手术关联的收费项目 - surgeryId: {}, surgeryNo: {}", id, surgeryNo); + + // 3. 删除申请单(doc_request_form) + LambdaQueryWrapper requestFormWrapper = new LambdaQueryWrapper<>(); + requestFormWrapper.eq(RequestForm::getPrescriptionNo, surgeryNo); + requestFormService.remove(requestFormWrapper); + log.info("删除手术关联的申请单 - surgeryId: {}, surgeryNo: {}", id, surgeryNo); + surgeryService.deleteSurgery(id); // 清除相关缓存