| | |
| | | } |
| | | // 先取差集 |
| | | List<Scene> sceneList = totalList.stream().filter(item -> !list.contains(item.getPhone())).collect(Collectors.toList()); |
| | | // 再随机抽取对应人员手机号 |
| | | Set<Scene> hashSet = new HashSet<>(); |
| | | Random random =new Random(); |
| | | for(int i=0;i<sceneList.size();i++){ |
| | | // 获取随机数作为下标索引 |
| | | int num = random.nextInt(sceneList.size()); |
| | | // 保存到 hashSet ,保证唯一 |
| | | hashSet.add(sceneList.get(num)); |
| | | // 数量达到预期设定退出循环 |
| | | if (hashSet.size()==personNumber){ |
| | | break; |
| | | // 如果差集数量不够 预定的数量(超汛情况),则从未超汛情况数据中补齐预定的数量 |
| | | if (sceneList.size()<personNumber){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("isOver",0); |
| | | // 查询未超汛的数据 |
| | | JSONArray jsonArray = getZtWaterMangerData(map); |
| | | // 过滤得到手机号集合(排查手机号为null的数据) |
| | | List<Scene> sceneListNoOver = filterJsonToList(jsonArray); |
| | | // 取差集 |
| | | List<Scene> differenceSceneListNoOver = sceneListNoOver.stream().filter(item -> !list.contains(item.getPhone())).collect(Collectors.toList()); |
| | | // 再随机抽取对应人员手机号 |
| | | Set<Scene> hashSet = new HashSet<>(); |
| | | // 先将超汛的加入集合 |
| | | for (Scene scene : sceneList) { |
| | | hashSet.add(scene); |
| | | } |
| | | // 未超汛的补充 |
| | | personNumber = personNumber - sceneList.size(); |
| | | Random random = new Random(); |
| | | for (int i = 0; i < differenceSceneListNoOver.size(); i++) { |
| | | // 获取随机数作为下标索引 |
| | | int num = random.nextInt(differenceSceneListNoOver.size()); |
| | | // 保存到 hashSet ,保证唯一 |
| | | hashSet.add(differenceSceneListNoOver.get(num)); |
| | | // 数量达到预期设定退出循环 |
| | | if (hashSet.size() == personNumber) { |
| | | break; |
| | | } |
| | | } |
| | | return hashSet; |
| | | }else { |
| | | // 再随机抽取对应人员手机号 |
| | | Set<Scene> hashSet = new HashSet<>(); |
| | | Random random = new Random(); |
| | | for (int i = 0; i < sceneList.size(); i++) { |
| | | // 获取随机数作为下标索引 |
| | | int num = random.nextInt(sceneList.size()); |
| | | // 保存到 hashSet ,保证唯一 |
| | | hashSet.add(sceneList.get(num)); |
| | | // 数量达到预期设定退出循环 |
| | | if (hashSet.size() == personNumber) { |
| | | break; |
| | | } |
| | | } |
| | | return hashSet; |
| | | } |
| | | return hashSet; |
| | | } |
| | | |
| | | /** |