Predicate 判断
Stream.filter() 过滤数据
//----------------------专家----------------------
// istatus=1 查询条件 order by create_date desc
@ApiOperation(value="专家", notes="专家", httpMethod = "GET")
@GetMapping("/expert")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageIndex",value = "第几页",paramType="query", defaultValue ="1", dataType = "Integer")
,@ApiImplicitParam(name = "pageSize",value = "每页几条",paramType="query", defaultValue ="10", dataType = "Integer")
,@ApiImplicitParam(name = "hotTopic",value = "是否热门专家(字典is_or_not)",paramType="query", dataType = "String")
,@ApiImplicitParam(name = "searchWord",value = "检索词",paramType="query", required = false, dataType = "String")
,@ApiImplicitParam(name = "academicTitle",value = "技术职称(字典jishuzhicheng)",paramType="query", required = false, dataType = "String")
,@ApiImplicitParam(name = "association",value = "所属协会(字典suoshukexie)",paramType="query", required = false, dataType = "String")
,@ApiImplicitParam(name = "society",value = "所属学会(字典suoshuxuehui)",paramType="query", required = false, dataType = "String")
,@ApiImplicitParam(name = "classify",value = "分类(字典classify)",paramType="query", required = false, dataType = "String")
})
public Result expert(@RequestParam(name = "pageIndex", required = false, defaultValue = "1")Integer pageIndex
,@RequestParam(name = "pageSize", required = false, defaultValue = "10")Integer pageSize
,@RequestParam(name = "hotTopic", required = false)String hotTopic
,@RequestParam(name = "searchWord", required = false)String searchWord
,@RequestParam(name = "academicTitle", required = false)String academicTitle
,@RequestParam(name = "association", required = false)String association
,@RequestParam(name = "society", required = false)String society
,@RequestParam(name = "classify", required = false)String classify
) {
Expert expert = new Expert();
expert.setIstatus("1"); // 启用
expert.setHotTopic(hotTopic);
expert.setSearchWord(searchWord);
expert.setAcademicTitle(academicTitle);
expert.setAssociation(association);
expert.setSociety(society);
expert.setClassify(classify);
Page<Expert> orderPage = new Page(pageIndex, pageSize, "create_date", false);
Page<Expert> pageData = expertService.selectPage(orderPage, expert);
/*真实姓名realName > 从事专业关键词specialityKeywords > 简介summary >
所学专业speciality > 学习经历learningExperience >
工作单位workUnit > 职务名称jobTitle > 从业经历workHistory > 成果信息achievement*/
List<Expert> records = pageData.getRecords();
if (records.size()>0 && StringUtils.isNotBlank(searchWord)) {
List<Predicate<Expert>> predicates = new ArrayList();
predicates.add(r -> r.getRealName() == null ? false : r.getRealName().contains(searchWord));
predicates.add(r -> r.getSpecialityKeywords() == null ? false : r.getSpecialityKeywords().contains(searchWord));
predicates.add(r -> r.getSummary() == null ? false : r.getSummary().contains(searchWord));
predicates.add(r -> r.getSpeciality() == null ? false : r.getSpeciality().contains(searchWord));
predicates.add(r -> r.getLearningExperience() == null ? false : r.getLearningExperience().contains(searchWord));
predicates.add(r -> r.getWorkUnit() == null ? false : r.getWorkUnit().contains(searchWord));
predicates.add(r -> r.getJobTitle() == null ? false : r.getJobTitle().contains(searchWord));
predicates.add(r -> r.getWorkHistory() == null ? false : r.getWorkHistory().contains(searchWord));
predicates.add(r -> r.getAchievement() == null ? false : r.getAchievement().contains(searchWord));
pageData.setRecords(filter(records, predicates));
}
return ResultBuilder.success("获取成功",pageData);
}
/**
* 根据多个判断条件, 对list数据按优先级排序
* list 需要过滤的数据
* predicates 多个判断条件
*/
private List<Expert> filter(List<Expert> list, List<Predicate<Expert>> predicates) {
List<Expert> resultList = new ArrayList();
Stream<Expert> stream = list.stream();
// 循环判断条件list
for (int i = 0, psize = predicates.size(), lsize = list.size(); resultList.size() < lsize && i < psize; i++) {
Predicate<Expert> predicate = predicates.get(i);
// stream.filter 过滤掉 符合条件的, 同时把符合条件的添加到 待返回的list
stream = stream.filter(e -> {
if (predicate.test(e)) {
resultList.add(e);
return false;
}
return true;
});
}
long count = stream.count();
return resultList;
}
Original url: Access
Created at: 2020-09-14 18:10:06
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论