|
|
|
|
@ -1,7 +1,11 @@ |
|
|
|
|
package org.springblade.desk.logistics.utils; |
|
|
|
|
|
|
|
|
|
import java.util.Collection; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import cn.hutool.db.sql.Order; |
|
|
|
|
import org.springblade.desk.order.pojo.entity.YieldOrder; |
|
|
|
|
import org.springframework.util.CollectionUtils; |
|
|
|
|
|
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
public class CollectionCheckUtil { |
|
|
|
|
/** |
|
|
|
|
@ -32,5 +36,30 @@ public class CollectionCheckUtil { |
|
|
|
|
// 不支持的集合类型
|
|
|
|
|
throw new IllegalArgumentException("不支持的集合类型:" + targetCollection.getClass().getName()); |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* 方式2:流式操作方式(简洁优雅,Java8+推荐) |
|
|
|
|
* @param a 实体类集合 |
|
|
|
|
* @param b 字符串集合 |
|
|
|
|
* @return b中不存在于a的字符串列表 |
|
|
|
|
*/ |
|
|
|
|
public static List<String> findNotExistInBByStream(List<YieldOrder> a, Collection<String> b) { |
|
|
|
|
// 1. 校验入参
|
|
|
|
|
if (CollectionUtils.isEmpty(a) || CollectionUtils.isEmpty(b)) { |
|
|
|
|
return CollectionUtils.isEmpty(b) ? new ArrayList<>() : new ArrayList<>(b); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 2. 提取a中的对比字段,生成Set(过滤null)
|
|
|
|
|
Set<String> aCodeSet = a.stream() |
|
|
|
|
.filter(Objects::nonNull) // 过滤null实体
|
|
|
|
|
.map(YieldOrder::getCardNo) // 提取要对比的字段(替换为你的实际字段)
|
|
|
|
|
.filter(Objects::nonNull) // 过滤null字段值
|
|
|
|
|
.collect(Collectors.toSet()); |
|
|
|
|
|
|
|
|
|
// 3. 筛选b中不在aCodeSet的元素
|
|
|
|
|
return b.stream() |
|
|
|
|
.filter(Objects::nonNull) // 过滤b中的null值
|
|
|
|
|
.filter(str -> !aCodeSet.contains(str)) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|