Explorar o código

医生端增加手术批量解绑 手术批量结束

wangzl hai 2 meses
pai
achega
a95e9961c9

+ 23 - 7
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizClinicRoomServiceImpl.java

@@ -929,21 +929,36 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
                 .in(BizClinicRoomPO::getId, clinicIds));
         //去除已删除数据
         Set<String> existClinicIds = clinicRooms.stream().map(BizClinicRoomPO::getId).collect(Collectors.toSet());
-        clinicIds.removeIf(clinicId -> !existClinicIds.contains(clinicId));
         List<AppClinicBatchErrorVO> finishError = new ArrayList<>();
-        clinicRooms.forEach(clinicRoom -> {
-            if (ObjectUtil.isNull(clinicRoom)) {
+        if(CollectionUtil.isEmpty(existClinicIds)){
+            clinicIds.forEach(clinicId->{
                 finishError.add(AppClinicBatchErrorVO.builder()
-                        .clinicId(clinicRoom.getId())
+                        .clinicId(clinicId)
                         .errorMsg("手术信息不存在")
                         .build());
-                return;
+            });
+            return finishError;
+        }
+
+        // 分离无效ID并生成错误信息
+        List<String> validClinicIds = new ArrayList<>();
+        for (String clinicId : clinicIds) {
+            if (!existClinicIds.contains(clinicId)) {
+                finishError.add(AppClinicBatchErrorVO.builder()
+                        .clinicId(clinicId)
+                        .errorMsg("手术信息不存在")
+                        .build());
+            } else {
+                validClinicIds.add(clinicId);
             }
+        }
+        clinicRooms.forEach(clinicRoom -> {
             if (ClinicPhaseEnums.AFTER.equals(clinicRoom.getClinicStatus())) {
                 finishError.add(AppClinicBatchErrorVO.builder()
                         .clinicId(clinicRoom.getId())
                         .errorMsg("手术已结束,无法结束手术")
                         .build());
+                validClinicIds.remove(clinicRoom.getId());
                 return;
             }
             if (ObjectUtil.compare(source.getClinicEndTime(), new Date()) > 0) {
@@ -953,6 +968,7 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
                                 , DateUtil.formatDateTime(source.getClinicEndTime())
                                 , DateUtil.formatDateTime(new Date())))
                         .build());
+                validClinicIds.remove(clinicRoom.getId());
                 return;
             }
             if (ObjectUtil.compare(clinicRoom.getClinicStartTime(), source.getClinicEndTime()) > 0) {
@@ -962,10 +978,10 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
                                 , DateUtil.formatDateTime(source.getClinicEndTime()),
                                 DateUtil.formatDateTime(clinicRoom.getClinicStartTime())))
                         .build());
+                validClinicIds.remove(clinicRoom.getId());
             }
         });
-        finishError.forEach(error->clinicIds.removeIf(id-> id.equals(error.getClinicId())));
-        if(CollectionUtil.isNotEmpty(clinicIds)){
+        if(CollectionUtil.isNotEmpty(validClinicIds)){
             baseRepository.update(null, new LambdaUpdateWrapper<BizClinicRoomPO>()
                     .set(BizClinicRoomPO::getClinicStatus, ClinicPhaseEnums.AFTER)
                     .set(BizClinicRoomPO::getClinicEndTime, source.getClinicEndTime())