API RESTful desenvolvida como parte de um projeto de sistema de gestão, utilizando Java 17 e o ecossistema Spring Boot. A API é responsável por gerenciar produtos, categorias, estoque e vendas.
- CRUD de Produtos: Operações completas de Criar, Ler, Atualizar e Deletar produtos.
- CRUD de Categorias: Gerenciamento das categorias de produtos.
- Gestão Financeira (Vendas):
- Registro transacional de vendas (
@Transactional). - Suporte a Descontos e diferentes Formas de Pagamento (Pix, Crédito, Débito, Dinheiro).
- Cálculo automático do valor final e baixa automática no estoque.
- Registro transacional de vendas (
- Dashboard e Relatórios: Endpoints para estatísticas em tempo real (Total de Vendas, Produtos Cadastrados) e histórico detalhado de transações.
- Segurança e Robustez: Validações de dados, tratamento de exceções e configuração de CORS para múltiplos clientes.
- Relacionamentos: Uso de
@ManyToOnepara associar Produtos a Categorias. - Padrão DTO: Utilização de Data Transfer Objects (DTOs) para a criação e atualização de entidades.
- Controle de Estoque: Endpoints
PATCHdedicados para adicionar e remover itens do estoque.
- Java 17
- Spring Boot 3
- Spring Data JPA (Hibernate)
- MySQL (Banco de Dados)
- Maven (Gerenciador de Dependências)
- Lombok (Produtividade)
- DBeaver (Gerenciador de Banco de Dados)
- Postman (Ferramenta de Teste de API)
- JDK 17 ou superior
- Maven 3.x
- Um servidor MySQL rodando.
- Um cliente de banco de dados (como DBeaver ou MySQL Workbench).
-
Usando o DBeaver, crie um novo banco de dados (schema) no seu MySQL com o nome
gestao_papelaria.-- CRIAR O BANCO DE DADOS CREATE DATABASE IF NOT EXISTS gestao_papelaria CHARACTER SET utf8mb4 -- BANCO IRÁ SUPORTAR ACENTOS COLLATE utf8mb4_unicode_ci; -- BANCO IRÁ SURPORTAR CARACTERES ESPECIAIS -
Abra o arquivo
src/main/resources/application.properties. -
Configure suas credenciais de acesso ao MySQL:
# Configuração para o MySQL spring.datasource.url=jdbc:mysql://localhost:3306/gestao_papelaria spring.datasource.username=SEU_USUARIO_AQUI spring.datasource.password=SUA_SENHA_AQUI spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
-
Clone o repositório:
git clone [https://github.com/NataniMoraes/gestao-papelaria-api.git](https://github.com/NataniMoraes/gestao-papelaria-api.git) cd gestao-papelaria-api -
Use o Maven para compilar e rodar o projeto:
mvn spring-boot:run
-
A API estará disponível em
http://localhost:8080.
Para testar a API com dados prontos, um script SQL (gestao-papelaria.sql) está incluído na raiz deste projeto. Você pode executá-lo no DBeaver (após configurar o banco) para popular as tabelas de categorias e produtos com dados de exemplo.
Você pode testar todos estes endpoints usando o Postman ou uma ferramenta similar.
| Método | Rota | Função |
|---|---|---|
GET |
/produtos |
Lista todos os produtos. |
GET |
/produtos/{id} |
Busca um produto pelo ID. |
POST |
/produtos |
Cria um novo produto (envia um ProdutoDTO). |
PUT |
/produtos/{id} |
Atualiza um produto (envia um ProdutoDTO). |
DELETE |
/produtos/{id} |
Exclui um produto. |
PATCH |
/produtos/{id}/adicionar-estoque |
Adiciona ao estoque (envia um Integer). |
PATCH |
/produtos/{id}/remover-estoque |
Remove do estoque (envia um Integer). |
| Método | Rota | Função |
|---|---|---|
GET |
/categorias |
Lista todas as categorias. |
POST |
/categorias |
Cria uma nova categoria. |
PUT |
/categorias/{id} |
Atualiza uma categoria. |
DELETE |
/categorias/{id} |
Exclui uma categoria. |
| Método | Rota | Função |
|---|---|---|
POST |
/vendas |
Realiza uma nova venda (envia VendaRequestDTO). |
Natani Moraes - Projeto acadêmico (2025)