[Ajuda] estou com um problema de lógica para distribuir pedido por estado

Pessoal blz?

Estou com seguinte problema, eu tenho uma tabela de pedidos onde tem o CNPJ dos clientes e estados a ser enviado. E uma outra tabela chamada vínculo cliente fornecedor onde cliente diz para qual fornecedor daquele estado preciso mandar, sendo que ele pode ter vários fornecedores em um estado, e ele quer que eu some quantos pedidos eu tenho e distribua igual para todos os fornecedores cadastrado e não tenho ideia de como fazer isso.

Programa feito em Java.

TABELA A (CADASTRO DOS FONERCEDORES POR CLIENTE E ESTADO)
ID_CLIENTE
CNPJ_FORNECEDOR
API_FORNECEDOR
ID_UF
OUTROS CAMPOS…

TABELA B (PEDIDOS)
CNPJ CLIENTE
UF_QUE SERA ENVIADO O PEDIDOS
OUTROS CAMPOS…

EU PRECISO VARRER A TABELA LÁ E SEPARAR FORNECEDOR POR ESTADO,
DEPOIS EU VOU VARRER A TABELA B E ASSOCIAR OS PEDIDOS PARA OS FORNECEDORES CADASTRADO POR ESTADO
A REGRA É QUE PRECISO DIVIDIR A QUANTIDADE DE PEDIDOS POR IGUAL OU QUASE POR FORNECEDOR
EXEMPLO:

ESTADO :SP
CLIENTE: A1
CLIENTE: A2

CLIENTE A1 TEM
55 PEDIDOS
E TEM 4 FORNECEDORES CADASTRADOS PARA SP
PRECISO PEGAR OS 55 PEDIDOS DISTRIBUIR PARA FICAREM COM QUANTIDADE IGUAL OU PARECIDA
EXEMPLO
FORNECEDOR 1 QTD PEDIDOS 13
FORNECEDOR 1 QTD PEDIDOS 13
FORNECEDOR 1 QTD PEDIDOS 13
FORNECEDOR 1 QTD PEDIDOS 16
ASSOCIO OS PEDIDOS POR FORNECEDOR
DEPOIS VOLTO PARA O SEGUNDO CLIENTE
APÓS TERMINAR, FAÇO O MESMO PROBLEMA PARA OUTRO ESTADO.

Se tens 55 a dividir por 4, o resultado exato é 13.75. Como não queremos dividir pedidos, isto quer dizer que alguns terão de ter 13 pedidos e outros 14. Ou, como tu fizeste, todos menos um tem 13 pedidos e o restante tem os 16 que faltam.

Qualquer uma das maneiras é simples de implementar em java.

public class Pedidos {

    public static void main(String[] args) {
        int pedidos = 55;
        int fornecedores = 4;

        divideQuaseIgualmente(pedidos, fornecedores);
        divideUltimoRestantes(pedidos, fornecedores);
    }

    private static void divideQuaseIgualmente(int pedidos, int fornecedores) {
        System.out.println("\n\nDivisão quase igualmente");
        int pedidosPorFornecedor = pedidos / fornecedores;
        int pedidosExtra = pedidos % fornecedores;

        for (int i = 0; i < pedidosExtra; i++) {
            System.out.println("Fornecedor " + i + " recebe " + (pedidosPorFornecedor + 1) + " pedidos ");
        }
        for (int i = pedidosExtra; i < fornecedores; i++) {
            System.out.println("Fornecedor " + i + " recebe " + pedidosPorFornecedor + " pedidos ");
        }
    }

    private static void divideUltimoRestantes(int pedidos, int fornecedores) {
        System.out.println("\n\nDivisão com ultimo receber os extra");
        int pedidosPorFornecedor = pedidos / fornecedores;
        int pedidosExtra = pedidos % fornecedores;

        for (int i = 0; i < fornecedores - 1; i++) {
            System.out.println("Fornecedor " + i + " recebe " + pedidosPorFornecedor + " pedidos ");
        }
        System.out.println("Fornecedor " + (fornecedores - 1) + " recebe " + (pedidosPorFornecedor + pedidosExtra) + " pedidos ");
    }
}
1 curtida