From b33010bfb1a4d61f33eb91bf5bee0dd76a289b7c Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 23 Aug 2023 16:33:21 +0800
Subject: [PATCH] 智能外呼任务创建失败新增短信告警
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java | 102 +++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 98 insertions(+), 4 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 06a639e..6d511b0 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
@@ -144,6 +144,9 @@
if (success){
//通过任务名称查询taskId
taskId = callTaskMapper.getTaskIdByTaskName(taskName);
+ }else {
+ // 任务创建失败,发送短信告知
+ asyncCallService.createOutCallErrorSendSms(jsonObject.getString("code"),jsonObject.getString("message"));
}
List<String> list = new ArrayList<>();
list.add(response.getBody());
@@ -477,21 +480,21 @@
Integer totalCalleeNumberCount = 0;
Integer totalConnectionCount = 0;
Integer totalThreeNoConnectCount = 0;
- Integer totalTwoNoConnectCount = 0;
+// Integer totalTwoNoConnectCount = 0;
Integer totalRefuseConnectCount = 0;
// 遍历
for (CallTaskStatistic taskStatistic : callTaskStatistics) {
totalCalleeNumberCount += Integer.parseInt(taskStatistic.getCalleeNumberCount());
totalConnectionCount += Integer.parseInt(taskStatistic.getConnectionCount());
totalThreeNoConnectCount += taskStatistic.getThreeNoConnectCount();
- totalTwoNoConnectCount += taskStatistic.getTwoNoConnectCount();
+// totalTwoNoConnectCount += taskStatistic.getTwoNoConnectCount();
totalRefuseConnectCount += taskStatistic.getRefuseConnectCount();
}
// 设置数据
callTaskStatistic.setCalleeNumberCount(totalCalleeNumberCount.toString());
callTaskStatistic.setConnectionCount(totalConnectionCount.toString());
callTaskStatistic.setThreeNoConnectCount(totalThreeNoConnectCount);
- callTaskStatistic.setTwoNoConnectCount(totalTwoNoConnectCount);
+// callTaskStatistic.setTwoNoConnectCount(totalTwoNoConnectCount);
callTaskStatistic.setRefuseConnectCount(totalRefuseConnectCount);
callTaskStatistic.setCreateTime(callTaskStatistics.get(0).getCreateTime());
// 查询当前行政区名称
@@ -667,7 +670,46 @@
*/
@Override
public Object getOutgoingStatisticByArea(CallTaskStatistic callTaskStatistic) {
- return callTaskMapper.getOutgoingStatisticByArea(callTaskStatistic);
+ if (null==callTaskStatistic.getCreateTime() || callTaskStatistic.getCreateTime().equals("")){
+ long l = System.currentTimeMillis();
+ // 设置当前时间的前一天
+ callTaskStatistic.setCreateTime(new SimpleDateFormat("yyyy-MM-dd").format(new Date(l - 60*60*24*1000)));
+ }
+ if (null==callTaskStatistic.getStartTime() || callTaskStatistic.getStartTime().equals("")){
+ long l = System.currentTimeMillis();
+ String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date(l - 60 * 60 * 24 * 1000));
+ // 设置当前时间的前一天
+ callTaskStatistic.setStartTime(format);
+ callTaskStatistic.setEndTime(format);
+ }
+ ThreadPoolExecutor executor = myThreadPoolConfig.threadPoolExecutor();
+ callTaskStatistic.setIsPage(1);
+ // 异步查询当前天日常呼叫(3次)统计数据
+ CompletableFuture<List<CallTaskStatistic>> callTaskStatisticCompletableFuture = getListCompletableFuture(null, callTaskStatistic, executor);
+ // 查询当前天除去日常呼叫外的统计数据
+ CompletableFuture<List<CallTaskStatistic>> notCallConnect = getListCompletableFuture(callTaskStatistic,executor);
+ //等待所有任务执行完成
+ try {
+ CompletableFuture.allOf(callTaskStatisticCompletableFuture,notCallConnect).get();
+ // 数据处理
+ List<CallTaskStatistic> callTaskStatistics = getCallTaskStatistics(callTaskStatisticCompletableFuture,null,null,null, notCallConnect,callTaskStatistic);
+ // 取当前行政区总数据
+// List<CallTaskStatistic> totalList = getTotalCallTaskStatistics(callTaskStatistics,callTaskStatistic);
+ List<CallTaskStatistic> totalList = new ArrayList<>();
+ // 排序
+ callTaskStatistics = getCallTaskStatisticsByOrder(callTaskStatistic, callTaskStatistics);
+ // 合并数据
+ totalList.addAll(callTaskStatistics);
+ // 返回数据
+ return totalList;
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (ExecutionException e) {
+ e.printStackTrace();
+ }
+ // 返回
+ return null;
+// return callTaskMapper.getOutgoingStatisticByArea(callTaskStatistic);
}
/**
@@ -744,6 +786,28 @@
}
/**
+ * 根据条件自动创建外呼任务--指定区域呼叫
+ * @param params
+ * @return
+ */
+ @Override
+ public List<String> createOutCallTaskJobHandlerByArea(Map<String, Object> params) {
+ // 常规任务,每天上午11点打150人,下午2点打11点未接人员,下午5点打下午2点未接通人员
+ String redisOneKey = bladeRedis.get(CallConstant.call_task_key);
+ if (null==redisOneKey){
+ List<String> stringList = everydayCallByArea(params);
+ // 取出数据进行设置 taskId
+ bladeRedis.setEx(CallConstant.call_task_key,stringList.get(1)+","+1,6*60*60L);
+ // 异步保存日常关联呼叫任务信息
+ asyncCallService.saveDailyCallTask(stringList.get(1),1);
+ // 响应
+ return stringList;
+ }else {
+ return createEverydayAfter(redisOneKey);
+ }
+ }
+
+ /**
* 日常外呼任务未接通的继续拨打
* @param redisOneKey 取值为上一次外呼的任务id
* @return
@@ -816,6 +880,36 @@
}
/**
+ * 日常外呼任务创建--按区域
+ * @param params
+ * @return
+ */
+ private List<String> everydayCallByArea(Map<String, Object> params) {
+ // 按区域查询需要呼叫的人员信息
+ List<Scene> totalList = callTaskMapper.getCallListByArea();
+ // 取出随机的150人
+ Set<Scene> taskRandomList = new HashSet<>();
+ Integer personNumber = 150;
+ Random random = new Random();
+ for (int i = 0; i < totalList.size(); i++) {
+ // 获取随机数作为下标索引
+ int num = random.nextInt(totalList.size());
+ // 保存到 hashSet ,保证唯一
+ taskRandomList.add(totalList.get(num));
+ // 数量达到预期设定退出循环
+ if (taskRandomList.size() == personNumber) {
+ break;
+ }
+ }
+ //4. 传入调度时间和随机得到的人员信息进行任务的创建并返回
+ params.put("list",setForListMap(taskRandomList));
+ // 调度时间处理
+ params.put("taskScheduleTime",new SimpleDateFormat("yyyy-MM-dd").format(new Date())+ " " +params.get("taskScheduleTime") + ":00");
+ // 创建任务并返回结果
+ return createTask(params);
+ }
+
+ /**
* 日常外呼任务创建
* @param params
* @return
--
Gitblit v1.9.3