diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java index c58159946..305efdecf 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java @@ -2343,21 +2343,52 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp .map(UpdateGroupDto::getRequestId).collect(Collectors.toList()); if (!idsToSetNull.isEmpty()) { - // 创建更新条件 - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.set("group_id", null).in("id", idsToSetNull); + // 对三个表都执行 group_id/group_no 置空(哪个表有该 id 就更新哪个) + UpdateWrapper medUpdateWrapper = new UpdateWrapper<>(); + medUpdateWrapper.set("group_id", null).in("id", idsToSetNull); + iMedicationRequestService.update(medUpdateWrapper); - // 执行更新 - iMedicationRequestService.update(updateWrapper); + UpdateWrapper srvUpdateWrapper = new UpdateWrapper<>(); + srvUpdateWrapper.set("group_id", null).in("id", idsToSetNull); + iServiceRequestService.update(srvUpdateWrapper); + + // DeviceRequest 使用 group_no(String 类型) + UpdateWrapper devUpdateWrapper = new UpdateWrapper<>(); + devUpdateWrapper.set("group_no", null).in("id", idsToSetNull); + iDeviceRequestService.update(devUpdateWrapper); } - // 处理非null的情况 - List medicationRequestList = groupList.stream().filter(dto -> dto.getGroupId() != null) - .map(dto -> new MedicationRequest().setId(dto.getRequestId()).setGroupId(dto.getGroupId())) - .collect(Collectors.toList()); - - if (!medicationRequestList.isEmpty()) { - iMedicationRequestService.saveOrUpdateBatch(medicationRequestList); + // 处理 groupId 非 null 的情况:按实际所属表分别更新 + List nonNullGroupList = groupList.stream() + .filter(dto -> dto.getGroupId() != null).collect(Collectors.toList()); + if (!nonNullGroupList.isEmpty()) { + for (UpdateGroupDto dto : nonNullGroupList) { + Long reqId = dto.getRequestId(); + Long grpId = dto.getGroupId(); + // 先尝试药品表(med_medication_request → group_id) + MedicationRequest medReq = iMedicationRequestService.getById(reqId); + if (medReq != null) { + UpdateWrapper uw = new UpdateWrapper<>(); + uw.set("group_id", grpId).eq("id", reqId); + iMedicationRequestService.update(uw); + continue; + } + // 再尝试诊疗表(wor_service_request → group_id) + ServiceRequest srvReq = iServiceRequestService.getById(reqId); + if (srvReq != null) { + UpdateWrapper uw = new UpdateWrapper<>(); + uw.set("group_id", grpId).eq("id", reqId); + iServiceRequestService.update(uw); + continue; + } + // 最后尝试耗材表(wor_device_request → group_no, String 类型) + DeviceRequest devReq = iDeviceRequestService.getById(reqId); + if (devReq != null) { + UpdateWrapper uw = new UpdateWrapper<>(); + uw.set("group_no", grpId != null ? grpId.toString() : null).eq("id", reqId); + iDeviceRequestService.update(uw); + } + } } }