From c5adb68fc9d94ebfd16fe401b3e47317e7eb9355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Thu, 28 May 2026 17:36:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=BA=93=E9=85=8D=E9=80=81=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E5=A2=9E=E5=88=A0=E6=94=B9;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ReservationStockOutOrderDomainService.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) 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 bdda8e91b..71934fa6d 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 @@ -1,5 +1,6 @@ package com.mhd.oms.domain.reservationStockOutOrder.service; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -108,6 +109,10 @@ public class ReservationStockOutOrderDomainService { if (stockOutOrderDO.getCheckTaskDistribution() == null) { stockOutOrderDO.setCheckTaskDistribution(2); } + List reservationDeliveryDetailsLinkList = stockOutOrderDO.getReservationDeliveryDetailsLinkList(); + if (!CollectionUtils.isEmpty(reservationDeliveryDetailsLinkList)) { + reservationDeliveryDetailsLinkService.saveBatch(reservationDeliveryDetailsLinkList); + } stockOutOrderService.insert(stockOutOrderDO); return outMaterialDetailService.batchInsert(stockOutOrderDO.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList()); } @@ -185,6 +190,23 @@ public class ReservationStockOutOrderDomainService { // } List reservationDeliveryDetailsLinkList = stockOutOrderDO.getReservationDeliveryDetailsLinkList(); + 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)) { + reservationDeliveryDetailsLinkService.removeByIds(deleteList); + } if (!CollectionUtils.isEmpty(reservationDeliveryDetailsLinkList)) { reservationDeliveryDetailsLinkService.updateBatchById(reservationDeliveryDetailsLinkList); }