| | |
| | | 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 |
| | |
| | | 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); |
| | | // 排序 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 查询当前天除去日常呼叫外的统计数据 |
| | | * @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 |
| | |
| | | * @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)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | // 返回 |
| | | 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); |
| | | } |
| | | } |