From 7c2a4aecdcaccb97f4022b2409a7e48505ee4203 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Mon, 19 Jun 2023 16:37:58 +0800
Subject: [PATCH] 智能外呼统计查询修改

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 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 fafa8fc..024bcf3 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
@@ -266,6 +266,7 @@
 
 	/**
 	 * 查询智能外呼统计数据-按日期-行政区统计
+	 * @param page
 	 * @param callTaskStatistic
 	 * @return
 	 */
@@ -354,6 +355,57 @@
 	}
 
 	/**
+	 * 智能外呼呼叫前一天未接通人员
+	 * @param map 包含调度时间
+	 * @return
+	 */
+	@Override
+	public List<String> createOutCallTaskByNotConnectJobHandler(Map<String, Object> map) {
+		map.put("day",1);
+		map.put("isOver","");
+		// 自动创建任务的 条件1:昨天外呼未接通人员  条件2:前三天如果同一个人都未接通,则不再呼叫
+		// 计算开始时间,结束时间
+		computationTime(map);
+		// 1. 查询前一天呼叫未接通人员
+		List<Scene> oneDayCallNotConnectList = callTaskMapper.getBeforeOneDayCallNotConnect(map);
+		if (oneDayCallNotConnectList.size()>0) {
+			// 2. 判断是否填报,查询前一天已填报的人员
+			List<String> fillRecordList = callTaskMapper.getFillRecordList(map);
+			// 3. 查询三天都未接通的人员
+			map.put("day", 3);
+			List<String> threeDayCallNotConnectList = callTaskMapper.getBeforeThreeDayCallNotConnect(map);
+			// 4. 组装数据,从前一天呼叫未接通里面去除已填报人员,去除连续三天未接人员
+			Set<Scene> taskRandomList = callNotConnectListDataHandle(oneDayCallNotConnectList, fillRecordList, threeDayCallNotConnectList);
+			// 5. 传入调度时间和随机得到的人员信息进行任务的创建并返回
+			map.put("list", setForListMap(taskRandomList));
+			// 调度时间处理
+			map.put("taskScheduleTime", new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " " + map.get("taskScheduleTime") + ":00");
+			// 创建任务并返回结果
+			return createTask(map);
+		}
+		return null;
+	}
+
+	/**
+	 * 组装数据,从前一天呼叫未接通里面去除已填报人员,去除连续三天未接人员
+	 * @param oneDayCallNotConnectList 前一天呼叫未接通人员信息
+	 * @param fillRecordList 前一天已填报的人员手机号集合
+	 * @param threeDayCallNotConnectList 连续三天都未接通的人员手机号集合
+	 * @return
+	 */
+	private Set<Scene> callNotConnectListDataHandle(List<Scene> oneDayCallNotConnectList, List<String> fillRecordList, List<String> threeDayCallNotConnectList) {
+		// 取差集
+		// 去除前一天已填报的人员手机号集合
+		List<Scene> sceneList = oneDayCallNotConnectList.stream().filter(item -> !fillRecordList.contains(item.getPhone())).collect(Collectors.toList());
+		// 再去除连续三天都未接通的人员手机号集合
+		List<Scene> resultList = sceneList.stream().filter(item -> !threeDayCallNotConnectList.contains(item.getPhone())).collect(Collectors.toList());
+		// 转set去重
+		HashSet<Scene> scenes = new HashSet<>(resultList);
+		// 返回
+		return scenes;
+	}
+
+	/**
 	 * hashSet 转 List<Map<String,String>>
 	 * @param taskRandomList
 	 * @return

--
Gitblit v1.9.3