👉 Sobre
👉 Funcionalidades
👉 Tecnologias
👉 Como executar
👉 Autor
👉 Licença
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:
-
- 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
-
- 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.
-
- 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.
- 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
- Create React App
- ReactJS
- Typescript
- Primereact
- Axios
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
Este projeto esta sobe a licença MIT.
Feito com 😆 por Glauber de Oliveira Matos 👋🏽 Entre em contato!