From fd83ac9621c597ea0d2d0977bac406321a7cacbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Wed, 10 Jun 2026 16:58:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(#668):=20=E4=B8=AD=E5=8C=BB=E5=A4=84?= =?UTF-8?q?=E6=96=B9=E7=AD=BE=E5=8F=91=20groupingBy=20null=20key=20?= =?UTF-8?q?=E5=B4=A9=E6=BA=83=E4=BF=AE=E5=A4=8D=20=E2=80=94=20=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=20null=20groupId=20=E5=90=8E=E5=86=8D=E5=88=86?= =?UTF-8?q?=E7=BB=84=EF=BC=8C=E6=97=A0=20groupId=20=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E6=96=B9=E5=90=84=E8=87=AA=E7=94=9F=E6=88=90=E5=A4=84=E6=96=B9?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...orStationChineseMedicalAppServiceImpl.java | 46 +++++++++++++------ 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/doctorstation/appservice/impl/DoctorStationChineseMedicalAppServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/doctorstation/appservice/impl/DoctorStationChineseMedicalAppServiceImpl.java index 2f93fc86d..3ea899b35 100755 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/doctorstation/appservice/impl/DoctorStationChineseMedicalAppServiceImpl.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/doctorstation/appservice/impl/DoctorStationChineseMedicalAppServiceImpl.java @@ -459,22 +459,38 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation } if (is_sign) { - // 按groupId分组 - Map> groupMap - = insertOrUpdateList.stream().collect(Collectors.groupingBy(AdviceSaveDto::getGroupId)); - // 为每个分组生成唯一的处方号 - groupMap.forEach((groupId, groupList) -> { - // 先查询当前groupId是否已经被签发生成过处方号 - List list = iMedicationRequestService - .list(new LambdaQueryWrapper().eq(MedicationRequest::getGroupId, groupId)); - if (!list.isEmpty() && StringUtils.isNotEmpty(list.get(0).getPrescriptionNo())) { - groupList.forEach(dto -> dto.setPrescriptionNo(list.get(0).getPrescriptionNo())); - } else { - String prescriptionNo - = assignSeqUtil.getSeq(AssignSeqEnum.PRESCRIPTION_CHINESE_HERBAL_MEDICINE.getPrefix(), 8); - groupList.forEach(dto -> dto.setPrescriptionNo(prescriptionNo)); + // 有 groupId 的按组生成处方号(groupingBy 不接受 null key,先过滤) + insertOrUpdateList.stream() + .filter(e -> e.getGroupId() != null) + .collect(Collectors.groupingBy(AdviceSaveDto::getGroupId)) + .forEach((groupId, groupList) -> { + List list = iMedicationRequestService + .list(new LambdaQueryWrapper() + .eq(MedicationRequest::getGroupId, groupId)); + if (!list.isEmpty() && StringUtils.isNotEmpty(list.get(0).getPrescriptionNo())) { + groupList.forEach(dto -> dto.setPrescriptionNo(list.get(0).getPrescriptionNo())); + } else { + String prescriptionNo = assignSeqUtil.getSeq( + AssignSeqEnum.PRESCRIPTION_CHINESE_HERBAL_MEDICINE.getPrefix(), 8); + groupList.forEach(dto -> dto.setPrescriptionNo(prescriptionNo)); + } + }); + + // 无 groupId 的各自生成处方号 + for (AdviceSaveDto dto : insertOrUpdateList) { + if (dto.getGroupId() != null) { + continue; } - }); + if (dto.getRequestId() != null) { + MedicationRequest existing = iMedicationRequestService.getById(dto.getRequestId()); + if (existing != null && StringUtils.isNotEmpty(existing.getPrescriptionNo())) { + dto.setPrescriptionNo(existing.getPrescriptionNo()); + continue; + } + } + dto.setPrescriptionNo(assignSeqUtil.getSeq( + AssignSeqEnum.PRESCRIPTION_CHINESE_HERBAL_MEDICINE.getPrefix(), 8)); + } } // 医嘱签发编码