Commit c3fe4af3 authored by RenanMontenegro3's avatar RenanMontenegro3

feat(blacklist): enriquece resposta da blacklist com dados do navio

- Refatora métodos findAll e findAllSemPaginacao para incluir dados do navio
- Adiciona enriquecimento automático dos campos: mmsi, nome, loa, boca, dwt, pontal, ponte_mfold, mfold_quilha, categoria e flag
- Mantém ordenação descendente por ID
- Melhora organização do código com separação clara entre busca, enriquecimento e mapeamento
parent 92ba03d9
...@@ -87,6 +87,10 @@ public class CadastroAcceptService { ...@@ -87,6 +87,10 @@ public class CadastroAcceptService {
extension = filename.substring(dotIndex + 1); extension = filename.substring(dotIndex + 1);
} }
System.out.println("***");
System.out.println("FILENAME");
System.out.println(filename);
String[] extensions = {"txt", "zip", "pdf"}; String[] extensions = {"txt", "zip", "pdf"};
Boolean verifica = false; Boolean verifica = false;
...@@ -108,6 +112,10 @@ public class CadastroAcceptService { ...@@ -108,6 +112,10 @@ public class CadastroAcceptService {
//if you are using optional and want to get or set an attribute, you must use the "get()" before //if you are using optional and want to get or set an attribute, you must use the "get()" before
destinatario = String.valueOf(userRepository.findBySendEmail(Boolean.TRUE).get().getEmail()); destinatario = String.valueOf(userRepository.findBySendEmail(Boolean.TRUE).get().getEmail());
System.out.println("***");
System.out.println("DESTINATÁRIO");
System.out.println(destinatario);
AcceptRequest acceptRequest = mapper.readValue(acceptRequestForm, AcceptRequest.class); AcceptRequest acceptRequest = mapper.readValue(acceptRequestForm, AcceptRequest.class);
...@@ -157,55 +165,101 @@ public class CadastroAcceptService { ...@@ -157,55 +165,101 @@ public class CadastroAcceptService {
List<Berco> bercosCompativeis = new ArrayList<>(); List<Berco> bercosCompativeis = new ArrayList<>();
// <PARTE-NOVA>
List<Berco> bercosRestricao = new ArrayList<>();
boolean hasRestrics = false;
// </PARTE-NOVA>
// CHECA SE TÁ NA BLACKLIST // CHECA SE TÁ NA BLACKLIST
boolean blackListed = blackListRepository.existsByImo(accept.getImo()); boolean blackListed = blackListRepository.existsByImo(accept.getImo());
// ~~~ PLANO DE AMARRACAO PORTO(BASEADO NAS REUNIOES) // ~~~ PLANO DE AMARRACAO PORTO(BASEADO NAS REUNIOES)
for (Berco berco : bercos) { for (Berco berco : bercos) {
String catNavio = accept.getCategoria(); // "2" = granel sólido; "3" = granel líquido; "1" = carga geral // if(Objects.equals(vessel.getCategoria(), berco.getCategoria())) {
String catBerco = berco.getCategoria(); // if ((vessel.getLoa()<=berco.getLoa_max())&&(acceptRequest.getCalado_entrada()<=berco.getCalado_max())&&(acceptRequest.getCalado_saida()<=berco.getCalado_max())&&(vessel.getDwt()<=berco.getDwt())
boolean categoriaValida = false; //// TESTAR SE TÁ FUNCIONANDO ESSA CHECAGEM DA BLACKLIST
// &&(!blackListed)
// Se o navio for granel sólido ("2"), só aceita berços "1" ou "2" // ) {
if ("2".equals(catNavio)) { // bercosCompativeis.add(berco);
if ("1".equals(catBerco) || "2".equals(catBerco)) { // }
categoriaValida = true; // }
if(Objects.equals(accept.getCategoria(), berco.getCategoria())) {
if ((accept.getLoa()<=berco.getLoa_max())&&(accept.getCalado_entrada()<=berco.getCalado_max())&&(accept.getCalado_saida()<=berco.getCalado_max())&&(accept.getDwt()<=berco.getDwt())
// TESTAR SE TÁ FUNCIONANDO ESSA CHECAGEM DA BLACKLIST
&&(!blackListed)
) {
bercosCompativeis.add(berco);
} }
} }
// Se o navio for granel líquido ("3"), só aceita berços "3"
else if ("3".equals(catNavio)) { // <PARTE-NOVA>
if ("3".equals(catBerco)) { // ADICIONA BERCOS DE RESTRICAO AOS BERCOS COM RESTRICAO (*)
categoriaValida = true; if (acceptRequest.getBercosSelecionados() != null && !acceptRequest.getBercosSelecionados().isEmpty()) {
// SE acceptRequest.getBercosSelecionados() NÃO ESTÁ VAZIO
for(Long nome : acceptRequest.getBercosSelecionados()) {
if(berco.getNome()==nome) {
bercosRestricao.add(berco);
} }
} }
// Se for carga geral ("1") ou outro código, exige igualdade exata hasRestrics = true;
else {
if (catNavio.equals(catBerco)) {
categoriaValida = true;
} }
// </PARTE-NOVA>
} }
// Verificação de dimensões, DWT e blacklist // <PARTE-NOVA>
if (categoriaValida Accept lastAccept = acceptRepository.findFirstByOrderByDataAcceptDesc();
&& accept.getLoa() <= berco.getLoa_max()
&& accept.getCalado_entrada() <= berco.getCalado_max() var lastAcceptId = lastAccept.getId();
&& accept.getCalado_saida() <= berco.getCalado_max() var currentAcceptId = lastAcceptId +1;
&& accept.getDwt() <= berco.getDwt()
&& !blackListed) {
bercosCompativeis.add(berco); // FAZ PRIMEIRO AS RESTRIÇÕES
if(hasRestrics) {
String nome_bercos_comp = "";
for(Berco berco : bercosCompativeis) {
// GUARDA O NOME DOS BERCOS
nome_bercos_comp = nome_bercos_comp + berco.getNome() + ", ";
} }
String nome_bercos_restric = "";
for(Berco berco : bercosRestricao) {
// GUARDA O NOME DOS BERCOS
nome_bercos_restric = nome_bercos_restric + berco.getNome() + ", ";
// COLOCA BERCOS COM RESTRICAÇÃO JUNTO AO COMPATÍVEIS
bercosCompativeis.add(berco);
} }
accept.setBercos(bercosCompativeis);
// OPERADOR PORTUÁRIO DEVE ANALISAR
accept.setStatus("N");
// CRIA & ENVIA E-MAIL
String msg;
Accept lastAccept = acceptRepository.findFirstByOrderByDataAcceptDesc(); msg =
"ID DO ACEITE: "+currentAcceptId+"\n"+
"IMO DO NAVIO: "+accept.getImo()+"\n"+
"CAUSA IDENTIFICADA(SISTEMA): Navio com RESTRIÇÃO! O Ag. Marítimo solicita atracação em berços específicos(excepcional)."+"\n"+
"BERCOS COMPATÍVEIS(SISTEMA): "+nome_bercos_comp+"\n"+
"BERCOS SOLICITADOS(USUÁRIO): "+nome_bercos_restric+"\n"+
"STATUS INPUTADO PARA O ACEITE(SISTEMA): Em processamento"+"\n"+
"OBS DO USUÁRIO: "+accept.getObs()+"\n"+
"DATA CRIAÇÃO DO REGISTRO DE ACEITE: "+accept.getData_create()+"\n"+
"DADOS DO USUÁRIO: "+"ID: "+user.getId()+" E-MAIL: "+user.getEmail()+" NOME: "+user.getName()+" PAPEL: "+user.getRole();
var lastAcceptId = lastAccept.getId(); emailService.enviarEmailTexto(destinatario, "Aceite de Navio - BLOQUEADO", msg);
var currentAcceptId = lastAcceptId +1;
} else if (!bercosCompativeis.isEmpty()) {
if (!bercosCompativeis.isEmpty()) { // </PARTE NOVA>
accept.setBercos(bercosCompativeis); accept.setBercos(bercosCompativeis);
// accept.setStatus(VeriStatus.valueOf("Y"));
accept.setStatus("Y"); accept.setStatus("Y");
} else { } else {
// id, imo, user, status, obs, data de criacao, local hospedagem + URIs // id, imo, user, status, obs, data de criacao, local hospedagem + URIs
...@@ -217,7 +271,7 @@ public class CadastroAcceptService { ...@@ -217,7 +271,7 @@ public class CadastroAcceptService {
"STATUS INPUTADO PARA O ACEITE(SISTEMA): Em processamento"+"\n"+ "STATUS INPUTADO PARA O ACEITE(SISTEMA): Em processamento"+"\n"+
"OBS DO USUÁRIO: "+accept.getObs()+"\n"+ "OBS DO USUÁRIO: "+accept.getObs()+"\n"+
"DATA CRIAÇÃO DO REGISTRO DE ACEITE: "+accept.getData_create()+"\n"+ "DATA CRIAÇÃO DO REGISTRO DE ACEITE: "+accept.getData_create()+"\n"+
"DADOS DO USUÁRIO: "+"ID: "+user.getId()+" E-MAIL: "+user.getEmail()+" NOME: "+user.getName()+" PAPÉL: "+user.getRole(); "DADOS DO USUÁRIO: "+"ID: "+user.getId()+" E-MAIL: "+user.getEmail()+" NOME: "+user.getName()+" PAPEL: "+user.getRole();
} else { } else {
msg = "ID DO ACEITE: "+currentAcceptId+"\n"+ msg = "ID DO ACEITE: "+currentAcceptId+"\n"+
"IMO DO NAVIO: "+accept.getImo()+"\n"+ "IMO DO NAVIO: "+accept.getImo()+"\n"+
...@@ -230,9 +284,7 @@ public class CadastroAcceptService { ...@@ -230,9 +284,7 @@ public class CadastroAcceptService {
} }
emailService.enviarEmailTexto(destinatario, "Aceite de Navio - BLOQUEADO", msg); emailService.enviarEmailTexto(destinatario, "Aceite de Navio - BLOQUEADO", msg);
// accept.setStatus(VeriStatus.valueOf("N"));
accept.setStatus("N"); accept.setStatus("N");
// throw new NegocioException("Nenhum berço compatível.");
} }
accept = acceptRepository.save(accept); accept = acceptRepository.save(accept);
...@@ -285,8 +337,8 @@ public class CadastroAcceptService { ...@@ -285,8 +337,8 @@ public class CadastroAcceptService {
// ESTATÍSTICA ACEITO, NEGADO, EM ANÁLISE // ESTATÍSTICA ACEITO, NEGADO, EM ANÁLISE
public Map<String, Long> getStatusStatistics() { public Map<String, Long> getStatusStatistics() {
// Obtem os resultados agrupados diretamente do banco // Obtem os resultados agrupados diretamente do banco
List<Object[]> results = acceptRepository.countByStatus(); List<Object[]> results = acceptRepository.countByStatus();
...@@ -303,7 +355,7 @@ public Map<String, Long> getStatusStatistics() { ...@@ -303,7 +355,7 @@ public Map<String, Long> getStatusStatistics() {
} }
return statistics; return statistics;
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment