Closed marcosroriz closed 2 years ago
Algoritmo Principal
Rota <- Consulta para pegar dados da rota via ID (param vem na url)
TipoDaRota <- Rota.Tipo
SE TipoDaRota == 1
RETURN CALCULO_ROTA_RODOVIARIA(cod_municipio, id_rota, rota)
SENÃO SE TipoDaRota == 2
RETURN CALCULO_ROTA_AQUAVIARIA(cod_municipio, id_rota, rota)
SENÃO
RETURN 400
FIMSE
----------------------------------------
CALCULO_ROTA_RODOVIARIA(cod_municipio, id_rota, rota)
CUSTO_VALIDO <- TRUE
PARAMS <- []
// Pegar os Motoristas
Motoristas <- Pegar motoristas da tabela sete_rota_dirigida_por_motorista
SE Motoristas for vazio
NUM_MOTORISTAS É INVALIDO (ADD PARAMS)
SALARIO_MEDIO_MOTORISTA É INVALIDO (ADD PARAMS)
SENÃO
NUM_MOTORISTAS <- LENGTH(Motoristas) (ADD PARAMS)
SALARIO_MEDIO_MOTORISTA <- 0
SALARIO_MEDIO_MOTORISTA_VALIDO <- TRUE
PARA CADA motorista em Motoristas
M <- Pegar motorista
SE M.SALARIO vazio ENTÃO
SALARIO_MEDIO_MOTORISTA_VALIDO FALSE
SENÃO
SALARIO_MEDIO_MOTORISTA <- SALARIO_MEDIO_MOTORISTA + M.SALARIO
FIMSE
SE SALARIO_MEDIO_MOTORISTA_VALIDO == TRUE
SALARIO_MEDIO_MOTORISTA <- SALARIO_MEDIO_MOTORISTA / NUM_MOTORISTAS
(ADD PARAMS)
SENÃO
SALARIO_MEDIO_MOTORISTA É INVÁLIDO
(ADD PARAMS)
// Lidar com os monitores
Monitores <- ANÁLOGO AO dos motoristas
// Detalhe, caso não tenha, não inválida.
// Lida com os parâmetros
Parametros <- Pegar parâmetros do município (cod_cidade)
PERC_ENCARGO_SOCIAIS
PERC_CFT_CUSTO_MANUTENCAO_RODO
VIDA_UTIL_RODO
PERC_RESIDUAL_RODO
PERC_TRC
PRECO_MEDIO_COMBUSTIVEIS
CFT_CONSUMO_OLEO_LUBRIFICANTE
PRECO_MEDIO_COMBUSTIVEIS
PRECO_MEDIO_PNEUS
PRECO_MEDIO_RECAPAGEM
CFT_CONSUMO_PECAS
// Lidar com os veículos
Veiculos <- Pegar veiculos da tabela sete_rota_possui_veiculo
SE Veiculos for vazio
NUM_VEICULOS É INVALIDO (ADD PARAMS)
PRECO_MEDIO_VEICULOS É INVÁLIDO (ADD PARAMS)
IPVA_FROTA É INVÁLIDO (ADD PARAMS)
DPVAT_FROTA É INVÁLIDO (ADD PARAMS)
SRC_FROTA É INVÁLIDO (ADD PARAMS)
CFT_CONSUMO_COMBUSTIVEL É INVÁLIDO (ADD PARAMS)
NUMERO_PNEUS É INVÁLIDO (ADD PARAMS)
VIDA_UTIL_PNEU É INVÁLIDO (ADD PARAMS)
SENÃO
NUM_VEICULOS <- LENGTH(Veiculos) (ADD PARAMS)
IPVA_FROTA <- 0
DPVAT_FROTA <- 0
SRC_FROTA <- 0
PRECO_TOTAL_VEICULOS <- 0
PRECO_MEDIO_VEICULOS <- 0
CFT_CONSUMO_COMBUSTIVEL_TOTAL <- 0
CFT_CONSUMO_COMBUSTIVEL <- 0
NUMERO_PNEUS <- 0
VIDA_UTIL_PNEU <- 0
IPVA_FROTA_VALIDO <- TRUE
DPVAT_FROTA_VALIDO <- TRUE
SRC_FROTA_VALIDO <- TRUE
PRECO_MEDIO_VEICULOS_VALIDO <- TRUE
CFT_CONSUMO_COMBUSTIVEL_VALIDO <- TRUE
NUMERO_PNEUS_VALIDO <- TRUE
VIDA_UTIL_PNEU_VALIDO <- TRUE
PARA CADA veiculo em Veiculos
V <- Pegar veiculo
SE V.IPVA vazio ENTÃO
IPVA_FROTA_VALIDO <- FALSE
SENÃO
IPVA_FROTA <- IPVA_FROTA + V.IPVA
SE V.DPVAT vazio ENTÃO
DPVAT_FROTA_VALIDO <- FALSE
SENÃO
DPVAT_FROTA <- DPVAT_FROTA + V.DPVAT
SE V.SRC vazio ENTÃO
SRC_FROTA_VALIDO <- FALSE
SENÃO
SRC_FROTA <- SRC_FROTA + V.SRC
SE V.PRECO vazio ENTÃO
PRECO_MEDIO_VEICULOS_VALIDO <- FALSE
SENÃO
PRECO_TOTAL_VEICULOS <- PRECO_TOTAL_VEICULOS + V.PRECO
SE V.CFT_CONSUMO_COMBUSTIVEL vazio ENTÃO
CFT_CONSUMO_COMBUSTIVEL_VALIDO <- FALSE
SENÃO
CFT_CONSUMO_COMBUSTIVEL_TOTAL <- CFT_CONSUMO_COMBUSTIVEL_TOTAL + V.CFT_CONSUMO_COMBUSTIVEL
km/l
9 km ----- 1l
1 km ----- x
9x = 1
x = 1/9
SE V.NUMERO_PNEUS vazio ENTÃO
NUMERO_PNEUS_VALIDO <- FALSE
SENÃO
NUMERO_PNEUS <- NUMERO_PNEUS + V.NUMERO_PNEUS
SE V.VIDA_UTIL_PNEU vazio ENTÃO
VIDA_UTIL_PNEU_VALIDO <- FALSE
SENÃO
VIDA_UTIL_PNEU <- VIDA_UTIL_PNEU + V.VIDA_UTIL_PNEU
FIMPARA
SE IPVA_FROTA_VALIDO == TRUE
IPVA_FROTA (ADD PARAMS)
SENÃO
IPVA_FROTA É INVÁLIDO
(ADD PARAMS)
SE DPVAT_FROTA_VALIDO == TRUE
DPVAT_FROTA (ADD PARAMS)
SENÃO
DPVAT_FROTA É INVÁLIDO
(ADD PARAMS)
SE SRC_FROTA_VALIDO == TRUE
SRC_FROTA (ADD PARAMS)
SENÃO
SRC_FROTA É INVÁLIDO
(ADD PARAMS)
SE PRECO_MEDIO_VEICULOS_VALIDO == TRUE
PRECO_MEDIO_VEICULOS <- PRECO_TOTAL_VEICULOS / NUM_VEICULOS
(ADD PARAMS)
SENÃO
PRECO_MEDIO_VEICULOS É INVÁLIDO
(ADD PARAMS)
SE CFT_CONSUMO_COMBUSTIVEL_VALIDO == TRUE
CFT_CONSUMO_MEDIO_COMBUSTIVEL <- CFT_CONSUMO_COMBUSTIVEL_TOTAL / NUM_VEICULOS
(ADD PARAMS)
SENÃO
CFT_CONSUMO_MEDIO_COMBUSTIVEL É INVÁLIDO
SE NUMERO_PNEUS_VALIDO == TRUE
NUMERO_PNEUS (ADD PARAMS)
SENÃO
NUMERO_PNEUS É INVÁLIDO
(ADD PARAMS)
SE VIDA_UTIL_PNEU_VALIDO == TRUE
VIDA_UTIL_PNEU (ADD PARAMS)
SENÃO
VIDA_UTIL_PNEU É INVÁLIDO
(ADD PARAMS)
Exemplo:
{
"NUM_MOTORISTAS": {
"codigo_parametro": "NUM_MOTORISTAS",
"modulo": "Rotas",
"result": true,
"valor": 2
},
"SALARIO_MEDIO_MOTORISTA": {
"codigo_parametro": "SALARIO_MEDIO_MOTORISTA",
"modulo": "Motoristas",
"result": true,
"valor": 2025
},
"NUM_MONITORES": {
"codigo_parametro": "NUM_MONITORES",
"modulo": "Monitores",
"result": true,
"valor": 1
},
"SALARIO_MEDIO_MONITORES": {
"codigo_parametro": "SALARIO_MEDIO_MONITORES",
"modulo": "Monitores",
"result": true,
"valor": 1957.02
},
"NUM_VEICULOS": {
"codigo_parametro": "NUM_VEICULOS",
"modulo": "Frota",
"result": true,
"valor": 1
},
"IPVA_FROTA": {
"codigo_parametro": "IPVA_FROTA",
"modulo": "Frota",
"result": true,
"valor": 5575
},
"DPVAT_FROTA": {
"codigo_parametro": "DPVAT_FROTA",
"modulo": "Frota",
"result": true,
"valor": 2222.2
},
"SRC_FROTA": {
"codigo_parametro": "SRC_FROTA",
"modulo": "Frota",
"result": true,
"valor": 1999.99
},
"CFT_CONSUMO_COMBUSTIVEL": {
"codigo_parametro": "CFT_CONSUMO_COMBUSTIVEL",
"modulo": "Frota",
"result": true,
"valor": 75
},
"NUMERO_PNEUS": {
"codigo_parametro": "NUMERO_PNEUS",
"modulo": "Frota",
"result": true,
"valor": 4
},
"VIDA_UTIL_PNEU": {
"codigo_parametro": "VIDA_UTIL_PNEU",
"modulo": "Frota",
"result": true,
"valor": 80
},
"PRECO_MEDIO_VEICULOS": {
"codigo_parametro": "PRECO_MEDIO_VEICULOS",
"modulo": "Frota",
"result": true,
"valor": 120000
},
"ANO_ATUAL": {
"codigo_parametro": "ANO_ATUAL",
"modulo": "Frota",
"result": false,
"valor": 2022
},
"ANO_VEICULO": {
"codigo_parametro": "ANO_VEICULO",
"modulo": "Frota",
"result": false,
"valor": 2012
},
"IDADE_VEICULO": {
"codigo_parametro": "IDADE_VEICULO",
"modulo": "Frota",
"result": true,
"valor": 10
},
"CFT_CONSUMO_OLEO_LUBRIFICANTE": {
"codigo_parametro": "CFT_CONSUMO_OLEO_LUBRIFICANTE",
"modulo": "Parâmetros",
"result": true,
"valor": 5
},
"CFT_CONSUMO_PECAS": {
"codigo_parametro": "CFT_CONSUMO_PECAS",
"modulo": "Parâmetros",
"result": true,
"valor": 0.0058
},
"NUM_RECAPAGEM": {
"codigo_parametro": "NUM_RECAPAGEM",
"modulo": "Parâmetros",
"result": true,
"valor": 3
},
"PERC_ENCARGO_SOCIAIS": {
"codigo_parametro": "PERC_ENCARGO_SOCIAIS",
"modulo": "Parâmetros",
"result": true,
"valor": 20
},
"PERC_CFT_CUSTO_MANUTENCAO_RODO": {
"codigo_parametro": "PERC_CFT_CUSTO_MANUTENCAO_RODO",
"modulo": "Parâmetros",
"result": true,
"valor": 13.5
},
"PERC_RESIDUAL_RODO": {
"codigo_parametro": "PERC_RESIDUAL_RODO",
"modulo": "Parâmetros",
"result": true,
"valor": 15
},
"PERC_TRC": {
"codigo_parametro": "PERC_TRC",
"modulo": "Parâmetros",
"result": true,
"valor": 9.25
},
"PRECO_MEDIO_COMBUSTIVEIS": {
"codigo_parametro": "PRECO_MEDIO_COMBUSTIVEIS",
"modulo": "Parâmetros",
"result": true,
"valor": 6.59
},
"PRECO_MEDIO_PNEUS": {
"codigo_parametro": "PRECO_MEDIO_PNEUS",
"modulo": "Parâmetros",
"result": true,
"valor": 450
},
"PRECO_MEDIO_RECAPAGEM": {
"codigo_parametro": "PRECO_MEDIO_RECAPAGEM",
"modulo": "Parâmetros",
"result": true,
"valor": 400
},
"VIDA_UTIL_RODO": {
"codigo_parametro": "VIDA_UTIL_RODO",
"modulo": "Parâmetros",
"result": true,
"valor": 10
},
"KM_MENSAL_ROTA": {
"codigo_parametro": "KM_MENSAL_ROTA",
"modulo": "Rotas",
"result": true,
"valor": 60
},
"NUM_ALUNOS": {
"codigo_parametro": "NUM_ALUNOS",
"modulo": "Monitores",
"result": false,
"valor": 0
}
}
@marcosroriz adiconado os parâmetros que faltaram.
KM_MENSAL_ROTA
NUM_MONITORES
SALARIO_MEDIO_MONITORES
IDADE_MEDIA_VEICULOS -> Média das idades dos veiculos
@marcosroriz serviço criado e funcionando corretamente.
Template da resposta:
Caso não seja possível calcular a rota, algum parâmetro está faltando, a resposta deverá retornar
result: false
. Caso contrário, deverá retornartrue
sete_rota_dirigida_por_motorista
.sete_rota_possui_veiculo
.sete_motoristas
(vindo desete_rota_dirigida_por_motorista
) pegar o camposalario
e calcular a média.Resultado é a média.
sete_parametros
.sete_parametros
(só necessário se a ROTA for rodoviária (tipo == 1)).sete_parametros
(só necessário se a ROTA for aquaviária (tipo == 2)).sete_rota_atendida_por_monitor
.sete_monitores
(vindo desete_rota_atendida_por_monitor
) pegar o camposalario
e calcular a média.Resultado é a média.
Só aplicável se a ROTA possuir monitores.
sete_veiculos
(vindo desete_rota_possui_veiculo
) pegar o campoipva
.Só necessário se a ROTA for rodoviária (tipo == 1).
Resultado é o somatório.
sete_veiculos
(vindo desete_rota_possui_veiculo
) pegar o campodpvat
.Só necessário se a ROTA for rodoviária (tipo == 1).
Resultado é o somatório.
sete_veiculos
(vindo desete_rota_possui_veiculo
) pegar o camposeguro_anual
.Resultado é o somatório.
sete_parametros
(só necessário se a ROTA for rodoviária (tipo == 1)).sete_parametros
(só necessário se a ROTA for aquaviária (tipo == 2)).sete_parametros
(só necessário se a ROTA for rodoviária (tipo == 1)).sete_parametros
(só necessário se a ROTA for aquaviária (tipo == 2)).sete_veiculos
(vindo desete_rota_possui_veiculo
) pegar o campopreco
.Resultado é a média.
sete_parametros
.sete_rotas
, campokm
.Resultado é a somatória por 20 dias (x20).
sete_veiculos
(vindo desete_rota_possui_veiculo
) pegar o campoconsumo
(km/l).Resultado é a média.
sete_parametros
.sete_parametros
.sete_parametros
.sete_parametros
.NÃO ESTÁ ATUALMENTE NA TABELA PARÂMETROS.
Só necessário se a ROTA for rodoviária (tipo == 1)
sete_veiculos
(vindo desete_rota_possui_veiculo
) pegar o camponumero_de_pneus
.Resultado é a soma.
Só necessário se a ROTA for rodoviária (tipo == 1)
sete_parametros
.sete_parametros
. NÃO ESTÁ ATUALMENTE NA TABELA PARÂMETROSsete_parametros
.sete_veiculos
(vindo desete_rota_possui_veiculo
) pegar o campovida_util_do_pneu
.Resultado é a soma.
sete_parametros
.sete_veiculos
(vindo desete_rota_possui_veiculo
) pegar o campopreco
.Resultado é a média.
sete_parametros
.Só necessário se a ROTA for aquaviária (tipo == 2)
sete_veiculos
(vindo desete_rota_possui_veiculo
) pegar o campopotencia_do_motor
.Só necessário se a ROTA for aquaviária (tipo == 2)
sete_rotas
, campotempo
.Só necessário se a ROTA for aquaviária (tipo == 2)
sete_parametros
.Só necessário se a ROTA for aquaviária (tipo == 2)
sete_parametros
.Só necessário se a ROTA for aquaviária (tipo == 2)
sete_parametros
.Só necessário se a ROTA for aquaviária (tipo == 2)
sete_parametros
.Só necessário se a ROTA for aquaviária (tipo == 2)
sete_parametros
.Só necessário se a ROTA for aquaviária (tipo == 2)
sete_rota_atende_aluno
.