zhongrj
2023-05-22 9122bbc2defd1bbef5dcfaaf906651489ad1095d
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java
@@ -377,20 +377,52 @@
      }
      // 先取差集
      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;
   }
   /**