@ApiOperation(value = "首页统计")
@GetMapping("/statistics")
public UnifyResponse<List<BusinessStatisticsVO>> statistics() throws Exception {
StatisticsPermissionQuery permissionQuery = getPermission();
ThreadPoolExecutor executor = ExecutorBuilder.create()
// 核心线程数
.setCorePoolSize(4)
// 最大线程数
.setMaxPoolSize(8)
// 线程空闲时间
.setKeepAliveTime(60, TimeUnit.SECONDS)
// 工作队列,容量20
.setWorkQueue(new LinkedBlockingQueue<>(20))
// 拒绝策略
.setHandler(new ThreadPoolExecutor.AbortPolicy())
.build();
CompletableFuture<BusinessStatisticsVO> customerStatistics = CompletableFuture.supplyAsync(() -> customerService.customerStatistics(permissionQuery), executor);
CompletableFuture<BusinessStatisticsVO> orderStatistics = CompletableFuture.supplyAsync(() -> orderService.orderStatistics(permissionQuery), executor);
CompletableFuture<BusinessStatisticsVO> quoteStatistics = CompletableFuture.supplyAsync(() -> quoteService.quoteStatistics(permissionQuery), executor);
CompletableFuture<BusinessStatisticsVO> clueStatistics = CompletableFuture.supplyAsync(() -> clueService.clueStatistics(permissionQuery), executor);
CompletableFuture.allOf(customerStatistics, orderStatistics, quoteStatistics, clueStatistics).join();
List<BusinessStatisticsVO> businessStatisticsVOList = new ArrayList<>();
//客户统计
businessStatisticsVOList.add(customerStatistics.get());
//订单统计
businessStatisticsVOList.add(orderStatistics.get());
//报价统计
businessStatisticsVOList.add(quoteStatistics.get());
//线索统计
businessStatisticsVOList.add(clueStatistics.get());
return new UnifyResponse<>(businessStatisticsVOList);
}
-
使用Hutool内置快速方法:简单场景下快速创建。
ThreadPoolExecutor quickExecutor = ThreadUtil.newExecutor(5, 10, 100);