List<String> notStandardDictData ;
List<String> importDictData;
List<String> standardDictData;
StringBuffer failureMsg = new StringBuffer();
// 拿出导入记录的所有计量单位数据
importDictData= detailList.stream().map(TnMdMaraTemp::getMeins).collect(Collectors.toList());
// 拿到所有不在标准字典中的项
notStandardDictData = checkNotStandDictData(importDictData,null,"tn_job_mara_base_unit");
// 拿到的项不为空,收集起来,返回提示信息 Collertors.joining 收集项集合拼接
if(!CollectionUtils.isEmpty(notStandardDictData)){
String message = notStandardDictData.stream().collect(Collectors.joining(",", "",";"));
return failureMsg.append("存在非法计量单位值:").append(message).toString();
}
// 校验传入list不在标准字典list中
private List<String> checkNotStandDictData(List<String> checkList,List<String> standardList,String dictType){
// 去重 list.distinct()
List<String> newList = checkList.stream().distinct().collect(Collectors.toList());
// 去空 过滤器过滤出非空list
List<String> result = newList.stream().filter(item -> (StringUtils.isNotEmpty(item) && item.length()>0)).collect(Collectors.toList());
// 判定list为null CollectionUtils.isEmpty()
// 判定字符串不为null StringUtils.isNotEmpty
if(CollectionUtils.isEmpty(standardList) && StringUtils.isNotEmpty(dictType)){
// 先通过字典类型去数据库查出 meinStandData,
List<SysDictData> meinStandData = dictTypeService.selectDictDataByType(dictType);
// 再从 meinStandData 中映射出这一字典类型所有的字典值list,
standardList = meinStandData.stream().map(SysDictData::getDictValue).collect(Collectors.toList());
// 返回去重、去空后的所有不在数据库字典数据list中的项,收集起来 !list.contains(item)
List<String> finalStandardList = standardList;
return result.stream().filter(item -> !finalStandardList.contains(item)).collect(Collectors.toList());
}else {
List<String> finalStandardList1 = standardList;
return result.stream().filter(item -> !finalStandardList1.contains(item)).collect(Collectors.toList());
}
}
list校验:去重(list.distinct),去空(list.filter)、不包含的项(list.filter)、收集信息拼接(Collertors.joining)
最新推荐文章于 2024-07-11 14:18:10 发布