Browse Source

专家抽取算法优化

tags/24080901
WendyYang 1 year ago
parent
commit
9dc5f77a69
1 changed files with 6 additions and 2 deletions
  1. +6
    -2
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/helper/ExpertRandomInviteAlgorithm.java

+ 6
- 2
pmapi/src/main/java/com/ningdatech/pmapi/meeting/helper/ExpertRandomInviteAlgorithm.java View File

@@ -22,6 +22,10 @@ import java.util.stream.Collectors;
**/
public class ExpertRandomInviteAlgorithm {

private static boolean expertMatchNone(List<MeetingExpert> experts, ExpertUserFullInfo userInfo) {
return experts.stream().noneMatch(w -> w.getExpertId().equals(userInfo.getUserId()));
}

/**
* 每个单位只抽取一人
*
@@ -49,7 +53,7 @@ public class ExpertRandomInviteAlgorithm {
List<ExpertUserFullInfo> expertsByCompany = expertGroupByUnit.get(company);
for (List<MeetingExpert> experts : expertsByRecentMeeting) {
List<ExpertUserFullInfo> notInvitedUsers = expertsByCompany.stream()
.filter(w -> experts.stream().noneMatch(expert -> expert.getExpertId().equals(w.getUserId())))
.filter(w -> expertMatchNone(experts, w))
.collect(Collectors.toList());
if (!notInvitedUsers.isEmpty()) {
result.add(RandomUtil.randomEle(notInvitedUsers));
@@ -88,7 +92,7 @@ public class ExpertRandomInviteAlgorithm {
result = new ArrayList<>();
for (List<MeetingExpert> experts : expertsByRecentMeeting) {
List<ExpertUserFullInfo> notInvitedUsers = userFullInfos.stream()
.filter(w -> experts.stream().noneMatch(expert -> expert.getExpertId().equals(w.getUserId())))
.filter(w -> expertMatchNone(experts, w))
.collect(Collectors.toList());
if (!notInvitedUsers.isEmpty()) {
result.addAll(notInvitedUsers);


Loading…
Cancel
Save