package com.docus.server.common.test;

import java.util.ArrayList;
import java.util.List;

public class DispatchService {

    public void dispatch() {


        //获取所有空闲的终端
        List<Terminal> terminalList = new ArrayList<>();
        List<TaskInfo> taskInfos = this.getTaskInfos(terminalList.size());



        //只采集，有优先级的
        for (Terminal terminal : terminalList) {
            for (TaskInfo taskInfo : taskInfos) {
                //先找出有只采集的任务。
                if (terminal.getOnlyTags().contains(taskInfo.getCollectType())) {
                    //把这个任务派给这个终端,并且把这个终端设置成繁忙
                    if (terminal.getPriorityTags().contains(taskInfo.getCollectType())) {
                        //把这个任务派给这个终端
                        terminal.setState(1);
                        return;
                    }
                }
            }
        }

        //只采集没有优先级
        for (Terminal terminal : terminalList) {
            //把刚才已经分配任务过的采集器排除
            if (terminal.getState() == 1) {
                continue;
            }

            for (TaskInfo taskInfo : taskInfos) {
                //先找出有只采集的任务。
                if (terminal.getOnlyTags().contains(taskInfo.getCollectType())) {
                    //把这个任务派给这个终端,并且把这个终端设置成繁忙

                    terminal.setState(1);
                    return;
                }
            }
        }


        //无只采集，有优先级
        for (Terminal terminal : terminalList) {

            //把刚才已经分配任务过的采集器排除
            if (terminal.getState() == 1) {
                continue;
            }

            for (TaskInfo taskInfo : taskInfos) {
                //先找出有只采集的任务。
                if (terminal.getPriorityTags().contains(taskInfo.getCollectType())) {
                    //把这个任务派给这个终端
                    terminal.setState(1);
                    return;
                }
            }
        }


        //无只采集，无优先级
        for (Terminal terminal : terminalList) {

            //把刚才已经分配任务过的采集器排除
            if (terminal.getState() == 1) {
                continue;
            }

            for (TaskInfo taskInfo : taskInfos) {
                //先找出有只采集的任务。
                //把这个任务派给这个终端
                terminal.setState(1);
                return;
            }
        }

    }

    private void dispatchTask(List<TaskInfo> taskInfos, Terminal terminal) {
        for (TaskInfo taskInfo : taskInfos) {
            //先找出有只采集的任务。
            if (terminal.getOnlyTags().contains(taskInfo.getCollectType())) {
                //把这个任务派给这个终端
                return;
            }
            if (terminal.getPriorityTags().contains(taskInfo.getCollectType())) {
                //把这个任务派给这个终端
                return;
            }
        }
    }


    public List<TaskInfo> getTaskInfos(int size) {
        return null;
    }

}
