diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java index 69c81cf13..252ce1d42 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java @@ -199,23 +199,29 @@ public class ReservationStockOutOrderDomainService { List oldList = reservationDeliveryDetailsLinkService.list(new LambdaQueryWrapper().eq(ReservationDeliveryDetailsLink::getOrderId, stockOutOrderDO.getOutOrderId())); // ====================== 核心:取差值 ====================== // 第一步:把新列表的所有id存入Set(O(1)查找,效率最高) - Set newIdSet = reservationDeliveryDetailsLinkList.stream() - .map(ReservationDeliveryDetailsLink::getId) - .filter(Objects::nonNull) // 过滤null id,避免空指针 - .collect(Collectors.toSet()); - - // 第二步:筛选出旧列表中 不在新列表里的元素(就是要删除的差值) - List deleteList = oldList.stream() - .filter(oldItem -> !newIdSet.contains(oldItem.getId())) - .collect(Collectors.toList()); - - // 第三步:执行删除(如果需要) - if (CollUtil.isNotEmpty(deleteList)) { - for (ReservationDeliveryDetailsLink reservationDeliveryDetailsLink : deleteList) { - reservationDeliveryDetailsLinkService.removeById(reservationDeliveryDetailsLink.getId()); - } + if (reservationDeliveryDetailsLinkList != null && !reservationDeliveryDetailsLinkList.isEmpty() + && oldList != null && !oldList.isEmpty()) { + Set newIdSet = reservationDeliveryDetailsLinkList.stream() + .map(ReservationDeliveryDetailsLink::getId) + .filter(Objects::nonNull) // 过滤null id,避免空指针 + .collect(Collectors.toSet()); + // 第二步:筛选出旧列表中 不在新列表里的元素(就是要删除的差值) + List deleteList = oldList.stream() + .filter(oldItem -> !newIdSet.contains(oldItem.getId())) + .collect(Collectors.toList()); + // 第三步:执行删除(如果需要) + if (CollUtil.isNotEmpty(deleteList)) { + for (ReservationDeliveryDetailsLink reservationDeliveryDetailsLink : deleteList) { + reservationDeliveryDetailsLinkService.removeById(reservationDeliveryDetailsLink.getId()); + } // reservationDeliveryDetailsLinkService.removeByIds(deleteList); + } } + + + + + if (!CollectionUtils.isEmpty(reservationDeliveryDetailsLinkList)) { for (ReservationDeliveryDetailsLink reservationDeliveryDetailsLink : reservationDeliveryDetailsLinkList) { reservationDeliveryDetailsLink.setOrderNumber(stockOutOrderDO.getOutOrderNumber());