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 ");
}
}