出库导入报错;

This commit is contained in:
王奎兴
2026-05-28 20:16:07 +08:00
parent c3c2d0e569
commit 11f8f5b440
@@ -199,23 +199,29 @@ public class ReservationStockOutOrderDomainService {
List<ReservationDeliveryDetailsLink> oldList = reservationDeliveryDetailsLinkService.list(new LambdaQueryWrapper<ReservationDeliveryDetailsLink>().eq(ReservationDeliveryDetailsLink::getOrderId, stockOutOrderDO.getOutOrderId()));
// ====================== 核心:取差值 ======================
// 第一步:把新列表的所有id存入Set(O(1)查找,效率最高)
Set<Long> newIdSet = reservationDeliveryDetailsLinkList.stream()
.map(ReservationDeliveryDetailsLink::getId)
.filter(Objects::nonNull) // 过滤null id,避免空指针
.collect(Collectors.toSet());
// 第二步:筛选出旧列表中 不在新列表里的元素(就是要删除的差值)
List<ReservationDeliveryDetailsLink> 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<Long> newIdSet = reservationDeliveryDetailsLinkList.stream()
.map(ReservationDeliveryDetailsLink::getId)
.filter(Objects::nonNull) // 过滤null id,避免空指针
.collect(Collectors.toSet());
// 第二步:筛选出旧列表中 不在新列表里的元素(就是要删除的差值)
List<ReservationDeliveryDetailsLink> 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());