需求是:1.默认全部数据设置为未读,
2.遍历另一个list数据,有相同的数据,则设置为已读
3.设置排序规则 排序:置顶优先、未读其次、发布时间降序
JSONObject jsonObject = JSON.parseObject(resultData);
List<NoticeInfo> noticeInfoList = noticeAnnouncementRepository.selectReadBymainUuids(noticeAnnouncementVOList);
noticeAnnouncementVOList = JSONArray.parseArray(jsonObject.getJSONObject("data").get("list").toString(),NoticeAnnouncementVO.class);
//全部设置未读, 根据业务表判断是否已读。
noticeAnnouncementVOList=noticeAnnouncementVOList.stream().map(n1->{
n1.setBpIsRead(false); //默认全部为未读
noticeInfoList.stream().filter(n2->Objects.equals(n1.getMainUuid(),n2.getMainUuid())).forEach(s->n1.setBpIsRead(true));
return n1;
}).sorted((s1, s2) -> { //设置排序规则 排序:置顶优先、未读其次、发布时间降序
//置顶
if("1".equals(s1.getTop())&&!"1".equals(s2.getTop())){
return -1;
}else if("1".equals(s2.getTop())&&!"1".equals(s1.getTop())){
return 1;
}else {
//未读
if (!s1.isBpIsRead() &&s2.isBpIsRead()) {
return -1;
} else if (!s2.isBpIsRead() && s1.isBpIsRead()) {
return 1;
} else {
LocalDate parse1 = LocalDate.parse(s1.getOnlinetime(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDate parse2 = LocalDate.parse(s2.getOnlinetime(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
return parse2.compareTo(parse1);
}
}
}).collect(Collectors.toList());