实现一个随机分配组员角色,组长已经预设,分配副审和主审
@Override
public AjaxResult average(Long groupId) {
ExpertGroup expertGroup = new ExpertGroup();
expertGroup.setGroupId(groupId);
List<ExpertGroup> groupList = expertGroupMapper.selectExpertGroupList(expertGroup);
for (int i=0,len =groupList.size(); i<len; i++){
if (Objects.equals(groupList.get(i).getUserType(),"1")){
groupList.remove(i);
}
}
Long[] userIdList = groupList.stream().map(ExpertGroup :: getUserId).toArray(Long[] :: new);
ExpertOpinion opinion = new ExpertOpinion();
if (userIdList.length != 0){
List<Integer> listTemp = new ArrayList<>();
int num = (int)(Math.random()* userIdList.length-1);
int temp;
String[] T = {"1","2"};
Random random = new Random();
int len;
if (userIdList.length%2!=0){
len = userIdList.length/2+1;
}else {
len = userIdList.length/2;
}
for (int i =0; i<len; i++){
temp = random.nextInt(num);
if (!listTemp.contains(temp)){
listTemp.add(temp);
}
}
String[] Y = listTemp.toString().split("");
for (String s : Y) {
Long[] ids = (Long[]) Arrays.stream(userIdList).toArray();
ExpertGroup expert = expertGroupMapper.selectExpertGroupById(ids[Integer.parseInt(s)]);
opinion.setUserId(expert.getUserId());
opinion.setUserType(T[0]);
expertOpinionMapper.insertExpertOpinion(opinion);
}
List<ExpertOpinion> expertOpinionList = expertOpinionMapper.selectExpertOpinionByGroupId(groupId);
List<Long> userIds = expertOpinionList.stream().map(ExpertOpinion :: getUserId).collect(Collectors.toList());
Long[] result = Arrays.stream(userIdList).filter(userIds::contains).toArray(Long[] :: new);
for (Long v : result){
opinion.setUserId(v);
opinion.setUserType(T[1]);
expertOpinionMapper.insertExpertOpinion(opinion);
}
}else{
return AjaxResult.error("未选中专家");
}
return AjaxResult.success();
}