|  | @@ -19,12 +19,15 @@ import com.xunmei.core.resumption.service.IProtectionService;
 | 
	
		
			
				|  |  |  import com.xunmei.core.resumption.service.ResumptionService;
 | 
	
		
			
				|  |  |  import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskService;
 | 
	
		
			
				|  |  |  import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskService;
 | 
	
		
			
				|  |  | +import com.xunmei.core.thread.ThreadPoolConfig;
 | 
	
		
			
				|  |  |  import com.xunmei.system.api.RemoteRoleService;
 | 
	
		
			
				|  |  |  import com.xunmei.system.api.RemoteUserService;
 | 
	
		
			
				|  |  |  import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 | 
	
		
			
				|  |  |  import com.xunmei.system.api.model.LoginUser;
 | 
	
		
			
				|  |  |  import lombok.extern.slf4j.Slf4j;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Qualifier;
 | 
	
		
			
				|  |  | +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
	
		
			
				|  | @@ -57,6 +60,9 @@ public class PanelServiceImpl implements PanelService {
 | 
	
		
			
				|  |  |      private RemoteRoleService roleService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private IProtectionService protectionService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    @Qualifier(ThreadPoolConfig.SOC_EXECUTOR)
 | 
	
		
			
				|  |  | +    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public List<PanelResultVo> selectPage() throws ExecutionException, InterruptedException, TimeoutException {
 | 
	
	
		
			
				|  | @@ -71,44 +77,49 @@ public class PanelServiceImpl implements PanelService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //履职任务
 | 
	
		
			
				|  |  |          CompletableFuture<List<PanelListVo>> resumptionTaskFuture = CompletableFuture.supplyAsync(() ->
 | 
	
		
			
				|  |  | -             resumptionService.selectCurUserTaskList(panelListDto)
 | 
	
		
			
				|  |  | +                resumptionService.selectCurUserTaskList(panelListDto), threadPoolTaskExecutor
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //布撤防
 | 
	
		
			
				|  |  |          CompletableFuture<List<PanelListVo>> protectionTaskFuture = CompletableFuture.supplyAsync(() ->
 | 
	
		
			
				|  |  | -             protectionService.selectCurUserTaskList(panelListDto)
 | 
	
		
			
				|  |  | +                protectionService.selectCurUserTaskList(panelListDto), threadPoolTaskExecutor
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //监控调阅任务
 | 
	
		
			
				|  |  |          CompletableFuture<List<PanelListVo>> monitorTaskFuture = CompletableFuture.supplyAsync(() ->
 | 
	
		
			
				|  |  | -             coreMonitoringRetrievalTaskService.selectCurUserTaskList(panelListDto)
 | 
	
		
			
				|  |  | +                coreMonitoringRetrievalTaskService.selectCurUserTaskList(panelListDto), threadPoolTaskExecutor
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //安全检查任务
 | 
	
		
			
				|  |  |          CompletableFuture<List<PanelListVo>> safetyTaskFuture = CompletableFuture.supplyAsync(() ->
 | 
	
		
			
				|  |  | -             safetyTaskService.selectCurUserTaskList(panelListDto)
 | 
	
		
			
				|  |  | +                safetyTaskService.selectCurUserTaskList(panelListDto), threadPoolTaskExecutor
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //预案演练任务
 | 
	
		
			
				|  |  |          CompletableFuture<List<PanelListVo>> drillTaskFuture = CompletableFuture.supplyAsync(() ->
 | 
	
		
			
				|  |  | -             drillTaskService.selectCurUserTaskList(panelListDto)
 | 
	
		
			
				|  |  | +                drillTaskService.selectCurUserTaskList(panelListDto), threadPoolTaskExecutor
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +        //预案演练任务
 | 
	
		
			
				|  |  | +        CompletableFuture<List<PanelListVo>> recLitFuture = CompletableFuture.supplyAsync(() ->
 | 
	
		
			
				|  |  | +                drillTaskService.selectRecList(panelListDto), threadPoolTaskExecutor
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //教育培训任务
 | 
	
		
			
				|  |  |          CompletableFuture<List<PanelListVo>> eduTrainingTaskFuture = CompletableFuture.supplyAsync(() ->
 | 
	
		
			
				|  |  | -             eduTrainingTaskService.selectCurUserTaskList(panelListDto)
 | 
	
		
			
				|  |  | +                eduTrainingTaskService.selectCurUserTaskList(panelListDto), threadPoolTaskExecutor
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          CompletableFuture<Void> allQueries = CompletableFuture.allOf(
 | 
	
		
			
				|  |  |                  resumptionTaskFuture, protectionTaskFuture, monitorTaskFuture,
 | 
	
		
			
				|  |  | -                safetyTaskFuture, drillTaskFuture, eduTrainingTaskFuture
 | 
	
		
			
				|  |  | +                safetyTaskFuture, drillTaskFuture, eduTrainingTaskFuture, recLitFuture
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          allQueries.get(TIMEOUT, TimeUnit.SECONDS);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          List<PanelListVo> resultList = Stream.of(
 | 
	
		
			
				|  |  |                          resumptionTaskFuture.join(), protectionTaskFuture.join(), monitorTaskFuture.join(),
 | 
	
		
			
				|  |  | -                        safetyTaskFuture.join(), drillTaskFuture.join(), eduTrainingTaskFuture.join()
 | 
	
		
			
				|  |  | +                        safetyTaskFuture.join(), drillTaskFuture.join(), eduTrainingTaskFuture.join(), recLitFuture.join()
 | 
	
		
			
				|  |  |                  )
 | 
	
		
			
				|  |  |                  .flatMap(Collection::stream)
 | 
	
		
			
				|  |  |                  .collect(Collectors.toList());
 | 
	
	
		
			
				|  | @@ -132,12 +143,24 @@ public class PanelServiceImpl implements PanelService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private void dealResult(List<PanelListVo> resumptionTaskResult, List<PanelListVo> protectionTaskResult, List<PanelListVo> monitorTaskResult, List<PanelListVo> safetyTaskResult, List<PanelListVo> drillTaskResult, List<PanelListVo> eduTrainingTaskResult) {
 | 
	
		
			
				|  |  | -        resumptionTaskResult.forEach(item->{item.setType(PanelTypeEnums.RESUMPTION.getCode());});
 | 
	
		
			
				|  |  | -        protectionTaskResult.forEach(item->{item.setType(PanelTypeEnums.PROTECTION.getCode());});
 | 
	
		
			
				|  |  | -        monitorTaskResult.forEach(item->{item.setType(PanelTypeEnums.MONITORING_RETRIEVAL.getCode());});
 | 
	
		
			
				|  |  | -        safetyTaskResult.forEach(item->{item.setType(PanelTypeEnums.SAFETY_CHECK.getCode());});
 | 
	
		
			
				|  |  | -        drillTaskResult.forEach(item->{item.setType(PanelTypeEnums.DRILL.getCode());});
 | 
	
		
			
				|  |  | -        eduTrainingTaskResult.forEach(item->{item.setType(PanelTypeEnums.EDU_TRAINING.getCode());});
 | 
	
		
			
				|  |  | +        resumptionTaskResult.forEach(item -> {
 | 
	
		
			
				|  |  | +            item.setType(PanelTypeEnums.RESUMPTION.getCode());
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        protectionTaskResult.forEach(item -> {
 | 
	
		
			
				|  |  | +            item.setType(PanelTypeEnums.PROTECTION.getCode());
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        monitorTaskResult.forEach(item -> {
 | 
	
		
			
				|  |  | +            item.setType(PanelTypeEnums.MONITORING_RETRIEVAL.getCode());
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        safetyTaskResult.forEach(item -> {
 | 
	
		
			
				|  |  | +            item.setType(PanelTypeEnums.SAFETY_CHECK.getCode());
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        drillTaskResult.forEach(item -> {
 | 
	
		
			
				|  |  | +            item.setType(PanelTypeEnums.DRILL.getCode());
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        eduTrainingTaskResult.forEach(item -> {
 | 
	
		
			
				|  |  | +            item.setType(PanelTypeEnums.EDU_TRAINING.getCode());
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |