|
@@ -38,24 +38,24 @@ public class OrderExcelTask extends RecursiveTask<List<OrderExcelDTO>> {
|
|
|
// 当end-start的值小于MAX时候,开始打印
|
|
// 当end-start的值小于MAX时候,开始打印
|
|
|
List<OrderExcelDTO> list = Lists.newArrayList();
|
|
List<OrderExcelDTO> list = Lists.newArrayList();
|
|
|
|
|
|
|
|
- if ((end - start) < MAX) {
|
|
|
|
|
|
|
+ int page = (end - start);
|
|
|
|
|
+ if (page < 2) {
|
|
|
// 小于最大值 直接执行
|
|
// 小于最大值 直接执行
|
|
|
- list = orderMapper.orderExcel(queryWrapper,dbName,operatorId,start,end);
|
|
|
|
|
|
|
+ list.addAll(orderMapper.orderExcel(queryWrapper,dbName,operatorId,(start-1)*MAX,MAX));
|
|
|
|
|
+ if(page == 1){
|
|
|
|
|
+ list.addAll(orderMapper.orderExcel(queryWrapper,dbName,operatorId,(end-1)*MAX,MAX));
|
|
|
|
|
+ }
|
|
|
return list;
|
|
return list;
|
|
|
} else {
|
|
} else {
|
|
|
// 将任务分解
|
|
// 将任务分解
|
|
|
List<OrderExcelTask> tasks = new ArrayList<>();
|
|
List<OrderExcelTask> tasks = new ArrayList<>();
|
|
|
- int max = (int) Math.ceil((double)end/MAX);
|
|
|
|
|
- for (int i = 0; i <= max; i++) {
|
|
|
|
|
- OrderExcelTask task = new OrderExcelTask(start,MAX, queryWrapper,operatorId,dbName,orderMapper);
|
|
|
|
|
- tasks.add(task);
|
|
|
|
|
- start+=MAX;
|
|
|
|
|
- if(start>end){
|
|
|
|
|
- start = end;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ int middle =(start + end) / 2;
|
|
|
|
|
+ OrderExcelTask left = new OrderExcelTask(start,middle, queryWrapper,operatorId,dbName,orderMapper);
|
|
|
|
|
+ OrderExcelTask right = new OrderExcelTask(middle+1,end, queryWrapper,operatorId,dbName,orderMapper);
|
|
|
// 并行执行
|
|
// 并行执行
|
|
|
- invokeAll(tasks);
|
|
|
|
|
|
|
+ invokeAll(left, right);
|
|
|
|
|
+ tasks.add(left);
|
|
|
|
|
+ tasks.add(right);
|
|
|
addResultFromTasks(list, tasks);
|
|
addResultFromTasks(list, tasks);
|
|
|
return list;
|
|
return list;
|
|
|
}
|
|
}
|