Skip to content

Aplicação full stack (Java - React) para upload de arquivos NF-e. Arquitetura em microsserviços com Spring Cloud

Notifications You must be signed in to change notification settings

glaubermatos/upload-danfe-file

Repository files navigation

GitHub language count Repository size GitHub last commit License

Aplicação para upload e processamento de arquivos xml de Notas Fiscais

🚧 Aplicação em desenvolvimento! 🚧

🏁 Tópicos

👉 Sobre
👉 Funcionalidades
👉 Tecnologias
👉 Como executar
👉 Autor
👉 Licença

💻 Sobre o projeto

A aplicação tem como principal objetivo permitir o upload de Nota Fiscal, realizar a leitura do xml, fazer o bind com a estrutura de classes do domínio, processar e persistir em um banco de dados MySQL.

A proposta do projeto é ser desenvolvido seguindo modelo arquitetural de microservices onde terá 3 serviços distintos:

  • nfe-upload-service: Aplicação responsável por recepcionar os arquivos;
  • nfe-process-service: Aplicação responsável por processar os arquivos;
  • nfe-front-service: aplicação responsável por apresentar a interface com o usuário.

Ficou curioso! visualize a demonstração:

post linkedin

Diagrama de classes



Protótipo




⚙️ Funcionalidades


  • nfe-upload-service

    • O nfe-upload-service deverá expor um serviço para realizar o upload do arquivo .xml referente a nota fiscal eletrônica.
    • Após recepcionar o arquivo, o nfe-upload-service deverá gravar o arquivo em disco no diretório input e retornar uma mensagem para o cliente informando que o seu arquivo foi recepcionado com sucesso e que será processado.
    • Quando o arquivo for enviado via upload, a nota deverá conter o status de AGUARDANDO_PROCESSAMENTO

  • nfe-process-service

    • O nfe-process-service, será executado a cada 120 segundos, ler o diretório input e processar os arquivos, se o arquivo foi processado com sucesso mover para a pasta output. Se o arquivo for processado com falha mover o arquivo em processamento para o diretório error.
    • Quando o nfs-process-service for executado a nota deverá ter o status de EM_PROCESSAMENTO, se a nota foi processada com SUCESSO, o status deverá ser PROCESSADA. Se a nota foi processada com erro a nota deverá ter o status PROCESSADA_COM_ERRO.

  • nfe-front-service

    • O nfe-front-service deverá ser uma aplicação web simples (desejável utilizar um framework JS)
    • Deve listar as notas fiscais já enviadas em um componente de tabela
    • Ao clicar no botão Upload - Abrir a tela para realizar o upload do arquivo
    • Ao clicar no botão Duplicatas - Abrir formulário para detalhar as duplicatas da Nfe, conforme modelo apresentado no diagrama de classes
    • Ao clicar no botão Remover - Abrir formulário para confirmar se deseja excluir o item selecionado.



🛠 Tecnologias

Back-end

  • Java 11
  • Spring-boot
  • JPA
  • Spring Data JPA
  • MySQL
  • RabbitMQ
  • Spring AMQP
  • Spring Cloud Eureka Server
  • Spring Cloud Eureka Client
  • Spring Cloud Api Gateway
  • jDom2

Front-end

  • Create React App
  • ReactJS
  • Typescript
  • Primereact
  • Axios


🚀 Como executar o projeto

Pré-requisitos

Para executar o projeto é necessário ter instalado o Docker e Docker-componse para subir o Banco de dados MySQL e Serviço de Mensageria RabbitMQ


Clonar repositório github - Necessário ter o git instalado.

git clone https://github.com/glaubermatos/upload-danfe-file.git

Executando o MySQL e RabbitMQ com docker-compose

Entre na pasta raiz do projeto e certifique-se que o arquivo docker-compose.yml esta presente e rode o comando docker-compose up, isso será o suficiente para que os serviços inicializem.

  • Credenciais de acesso ao RabbitMQ

- username: rabbitmq
- password: rabbitmq
cd upload-danfe-file
sudo docker-compose up

Executando os serviços

Backend

Os passos a seguir desevem seguir a ordem especificada para evitar erros de comunicação entre os microserviços


Eureka Server

Entrar no diretório eureka-server e rodar o projeto

cd eureka-server
./mvnw spring-boot:run

Serviço de upload de arquivo

Entrar no diretório nfe-upload-service e rodar o projeto

cd nfe-upload-service
./mvnw spring-boot:run

Serviço de processamento de arquivo

Entrar no diretório nfe-process-service e rodar o projeto

cd nfe-process-service
./mvnw spring-boot:run

Api Gateway

Entrar no diretório api-gateway-server e rodar o projeto

cd api-gateway-server
./mvnw spring-boot:run

Front-end

Entrar no diretório nfe-front-service e rodar o projeto

cd nfe-front-service
yarn start


🦸‍♂️ Autor


glaubermatos
🌟 Glauber de Oliveira Matos 🌟

Linkedin Badge


📝 Licença

Este projeto esta sobe a licença MIT.

Feito com 😆 por Glauber de Oliveira Matos 👋🏽 Entre em contato!

About

Aplicação full stack (Java - React) para upload de arquivos NF-e. Arquitetura em microsserviços com Spring Cloud

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published