From 9122bbc2defd1bbef5dcfaaf906651489ad1095d Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Mon, 22 May 2023 14:46:11 +0800
Subject: [PATCH] 定时任务查询,新增定时任务关联,智能外呼定时任务创建

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java |   56 ++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 44 insertions(+), 12 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java
index ac9d460..2c16f77 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java
+++ b/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;
 	}
 
 	/**

--
Gitblit v1.9.3