From a7c5b11f4db54f95845b14c1105fa4b962fa9f3a Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 05 Jul 2023 17:54:11 +0800
Subject: [PATCH] 智能外呼统计查询修改
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java | 150 +++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 124 insertions(+), 26 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 e1c07d0..ce43b70 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
@@ -283,6 +283,56 @@
return resultListPage;
}
+// /**
+// * 查询智能外呼统计数据-按日期-行政区统计
+// * @param page
+// * @param callTaskStatistic
+// * @return
+// */
+// @Override
+// public Object getOutgoingStatisticList(IPage<CallTaskStatistic> page,CallTaskStatistic 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)));
+// }
+// ThreadPoolExecutor executor = myThreadPoolConfig.threadPoolExecutor();
+// // 异步查询统计数据
+// CompletableFuture<List<CallTaskStatistic>> callTaskStatisticCompletableFuture = getListCompletableFuture(page, callTaskStatistic, executor);
+// // 查询 按区域统计连续三天,连续两天未接通,前一天拒接对应的数量
+// Map<String, Object> threeDay = computationTime(callTaskStatistic.getCreateTime(), 2);
+// Map<String, Object> twoDay = computationTime(callTaskStatistic.getCreateTime(), 1);
+// Map<String, Object> oneDay = computationTime(callTaskStatistic.getCreateTime(), 0);
+// // 查询
+// CompletableFuture<List<CallTaskStatistic>> threeDayNotCallConnect = getListCompletableFuture(callTaskStatistic, executor, threeDay, "200003", 2);
+// CompletableFuture<List<CallTaskStatistic>> twoDayNotCallConnect = getListCompletableFuture(callTaskStatistic, executor, twoDay, "200003", 1);
+// CompletableFuture<List<CallTaskStatistic>> oneDayNotCallConnect = getListCompletableFuture(callTaskStatistic, executor, oneDay, "200005", 0);
+// //等待所有任务执行完成
+// try {
+// CompletableFuture.allOf(callTaskStatisticCompletableFuture,threeDayNotCallConnect,twoDayNotCallConnect,oneDayNotCallConnect).get();
+// // 数据处理
+// List<CallTaskStatistic> callTaskStatistics = getCallTaskStatistics(callTaskStatisticCompletableFuture, oneDay, threeDayNotCallConnect, twoDayNotCallConnect, oneDayNotCallConnect);
+// // 取当前行政区总数据
+// List<CallTaskStatistic> totalList = getTotalCallTaskStatistics(callTaskStatistics,callTaskStatistic);
+// // 排序
+// callTaskStatistics = getCallTaskStatisticsByOrder(callTaskStatistic, callTaskStatistics);
+// // 合并数据
+// totalList.addAll(callTaskStatistics);
+// // 返回数据
+// if (null!= callTaskStatistic.getIsPage()) {
+// return totalList;
+// }else {
+// return page.setRecords(totalList);
+// }
+// } catch (InterruptedException e) {
+// e.printStackTrace();
+// } catch (ExecutionException e) {
+// e.printStackTrace();
+// }
+// // 返回
+// return null;
+// }
+
/**
* 查询智能外呼统计数据-按日期-行政区统计
* @param page
@@ -297,21 +347,15 @@
callTaskStatistic.setCreateTime(new SimpleDateFormat("yyyy-MM-dd").format(new Date(l - 60*60*24*1000)));
}
ThreadPoolExecutor executor = myThreadPoolConfig.threadPoolExecutor();
- // 异步查询统计数据
+ // 异步查询当前天日常呼叫(3次)统计数据
CompletableFuture<List<CallTaskStatistic>> callTaskStatisticCompletableFuture = getListCompletableFuture(page, callTaskStatistic, executor);
- // 查询 按区域统计连续三天,连续两天未接通,前一天拒接对应的数量
- Map<String, Object> threeDay = computationTime(callTaskStatistic.getCreateTime(), 2);
- Map<String, Object> twoDay = computationTime(callTaskStatistic.getCreateTime(), 1);
- Map<String, Object> oneDay = computationTime(callTaskStatistic.getCreateTime(), 0);
- // 查询
- CompletableFuture<List<CallTaskStatistic>> threeDayNotCallConnect = getListCompletableFuture(callTaskStatistic, executor, threeDay, "200003", 2);
- CompletableFuture<List<CallTaskStatistic>> twoDayNotCallConnect = getListCompletableFuture(callTaskStatistic, executor, twoDay, "200003", 1);
- CompletableFuture<List<CallTaskStatistic>> oneDayNotCallConnect = getListCompletableFuture(callTaskStatistic, executor, oneDay, "200005", 0);
+ // 查询当前天除去日常呼叫外的统计数据
+ CompletableFuture<List<CallTaskStatistic>> notCallConnect = getListCompletableFuture(callTaskStatistic,executor);
//等待所有任务执行完成
try {
- CompletableFuture.allOf(callTaskStatisticCompletableFuture,threeDayNotCallConnect,twoDayNotCallConnect,oneDayNotCallConnect).get();
+ CompletableFuture.allOf(callTaskStatisticCompletableFuture,notCallConnect).get();
// 数据处理
- List<CallTaskStatistic> callTaskStatistics = getCallTaskStatistics(callTaskStatisticCompletableFuture, oneDay, threeDayNotCallConnect, twoDayNotCallConnect, oneDayNotCallConnect);
+ List<CallTaskStatistic> callTaskStatistics = getCallTaskStatistics(callTaskStatisticCompletableFuture,null,null,null, notCallConnect,callTaskStatistic);
// 取当前行政区总数据
List<CallTaskStatistic> totalList = getTotalCallTaskStatistics(callTaskStatistics,callTaskStatistic);
// 排序
@@ -414,6 +458,20 @@
}
/**
+ * 查询当前天除去日常呼叫外的统计数据
+ * @param callTaskStatistic
+ * @param executor
+ * @return
+ */
+ @NotNull
+ private CompletableFuture<List<CallTaskStatistic>> getListCompletableFuture(CallTaskStatistic callTaskStatistic, ThreadPoolExecutor executor) {
+ return CompletableFuture.supplyAsync(()->{
+ List<CallTaskStatistic> outgoingStatisticList = callTaskMapper.getNoDayOutgoingStatisticList(callTaskStatistic);
+ return outgoingStatisticList;
+ },executor);
+ }
+
+ /**
* 按行政区查询对应的接通率
* @param page
* @param callTaskStatistic
@@ -448,28 +506,46 @@
* @throws ExecutionException
*/
@NotNull
- private List<CallTaskStatistic> getCallTaskStatistics(CompletableFuture<List<CallTaskStatistic>> callTaskStatisticCompletableFuture, Map<String, Object> oneDay, CompletableFuture<List<CallTaskStatistic>> threeDayNotCallConnect, CompletableFuture<List<CallTaskStatistic>> twoDayNotCallConnect, CompletableFuture<List<CallTaskStatistic>> oneDayNotCallConnect) throws InterruptedException, ExecutionException {
+ private List<CallTaskStatistic> getCallTaskStatistics(CompletableFuture<List<CallTaskStatistic>> callTaskStatisticCompletableFuture,
+ Map<String, Object> oneDay,
+ CompletableFuture<List<CallTaskStatistic>> threeDayNotCallConnect,
+ CompletableFuture<List<CallTaskStatistic>> twoDayNotCallConnect,
+ CompletableFuture<List<CallTaskStatistic>> oneDayNotCallConnect,
+ CallTaskStatistic callTaskStatistic) throws InterruptedException, ExecutionException {
// 获取信息
List<CallTaskStatistic> callTaskStatistics = callTaskStatisticCompletableFuture.get();
- List<CallTaskStatistic> threeNotConnectTaskStatisticsList = threeDayNotCallConnect.get();
- List<CallTaskStatistic> twoNotConnectTaskStatisticsList = twoDayNotCallConnect.get();
+// List<CallTaskStatistic> threeNotConnectTaskStatisticsList = threeDayNotCallConnect.get();
+// List<CallTaskStatistic> twoNotConnectTaskStatisticsList = twoDayNotCallConnect.get();
List<CallTaskStatistic> oneNotConnectTaskStatisticsList = oneDayNotCallConnect.get();
// 遍历
for (CallTaskStatistic taskStatistic : callTaskStatistics) {
- taskStatistic.setCreateTime(oneDay.get("endTime").toString());
- for (CallTaskStatistic statistic : threeNotConnectTaskStatisticsList) {
- if (taskStatistic.getGuid().equals(statistic.getGuid())){
- taskStatistic.setThreeNoConnectCount(statistic.getCount());
- }
- }
- for (CallTaskStatistic statistic : twoNotConnectTaskStatisticsList) {
- if (taskStatistic.getGuid().equals(statistic.getGuid())){
- taskStatistic.setTwoNoConnectCount(statistic.getCount());
- }
- }
+// taskStatistic.setCreateTime(oneDay.get("endTime").toString());
+ taskStatistic.setCreateTime(callTaskStatistic.getCreateTime());
+// for (CallTaskStatistic statistic : threeNotConnectTaskStatisticsList) {
+// if (taskStatistic.getGuid().equals(statistic.getGuid())){
+// taskStatistic.setThreeNoConnectCount(statistic.getCount());
+// }
+// }
+// for (CallTaskStatistic statistic : twoNotConnectTaskStatisticsList) {
+// if (taskStatistic.getGuid().equals(statistic.getGuid())){
+// taskStatistic.setTwoNoConnectCount(statistic.getCount());
+// }
+// }
for (CallTaskStatistic statistic : oneNotConnectTaskStatisticsList) {
if (taskStatistic.getGuid().equals(statistic.getGuid())){
- taskStatistic.setRefuseConnectCount(statistic.getCount());
+ Integer count = Integer.parseInt(taskStatistic.getCalleeNumberCount()) + Integer.parseInt(statistic.getCalleeNumberCount());
+ Integer connectCount = Integer.parseInt(taskStatistic.getConnectionCount()) + Integer.parseInt(statistic.getConnectionCount());
+ taskStatistic.setCalleeNumberCount(count.toString());
+ taskStatistic.setConnectionCount(connectCount.toString());
+ taskStatistic.setRefuseConnectCount(taskStatistic.getRefuseConnectCount() + statistic.getRefuseConnectCount());
+ // 计算比例
+ if (connectCount==0){
+ taskStatistic.setCallCompletingRate("0");
+ }else {
+ //格式化小数
+ DecimalFormat df = new DecimalFormat("0.00");
+ taskStatistic.setCallCompletingRate(df.format((float) connectCount / count * 100));
+ }
}
}
}
@@ -873,4 +949,26 @@
// 返回
return page.setRecords(callNotConnectResultList);
}
+
+ /**
+ * 按日期行政区呼叫结果详情列表信息
+ * @param callTaskStatistic
+ * @param page
+ * @return
+ */
+ @Override
+ public Object getCallResultList(IPage<CallTaskStatistic> page, CallTaskStatistic callTaskStatistic) {
+ List<String> list = new ArrayList<>();
+ if (null!= callTaskStatistic.getAdCode() && !callTaskStatistic.getAdCode().equals("")){
+ // 查询所有下级区域code
+ list = getAllChildrenAreaByAreaCode(callTaskStatistic.getAdCode());
+ }
+ if (null!=callTaskStatistic.getIsPage()){
+ // 不分页
+ return callTaskMapper.getCallResultList(null, list,callTaskStatistic);
+ }
+ List<CallTaskStatistic> callNotConnectResultList = callTaskMapper.getCallResultList(page,list, callTaskStatistic);
+ // 返回
+ return page.setRecords(callNotConnectResultList);
+ }
}
--
Gitblit v1.9.3