Skip to content

Commit

Permalink
Inclusão do CRUD do inventário e ajustes no CRUD de produtos
Browse files Browse the repository at this point in the history
  • Loading branch information
Sandro Mendes committed Jun 22, 2019
1 parent 250014b commit ad8daa2
Show file tree
Hide file tree
Showing 13 changed files with 152 additions and 100 deletions.
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,28 @@ Nas pr
7. Selecione projeto "controle-estoque-web", clique com o botão direito e depois em "Import Projects"
8. Selecione o projeto e clique em "Finish"

# Build

* mvn clean install

# Inicialização

* mvn cargo:run

Obs: Irá inicializar na porta '8082'

# Access the pages using the URLs:

* http://localhost:8080/produtos/listar
* http://localhost:8080/produtos/adicionarProduto
* http://localhost:8080/categoria/listar
* http://localhost:8080/categorias/adicionarCategoria
* http://localhost:8080/fornecedores/listar
* http://localhost:8080/fornecedores/adicionarFornecedor
* http://localhost:8080/inventarios/listar
* http://localhost:8080/clientes/listar
* http://localhost:8080/clientes/adicionarCliente

# Funcionalidades previstas

* Cadastro de produtos e categorias de produtos
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,5 @@ public class ControleEstoqueAppConfiguration implements WebMvcConfigurer {
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/static/js/");
}

}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package br.com.aioprojs.controleestoque.controller;

import java.util.List;
import java.util.UUID;

import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -21,49 +22,54 @@ public class InventarioController {
@Autowired
private EstoqueService estoqueService;

@RequestMapping(value = "/estoques/listar", method = RequestMethod.GET)
@RequestMapping(value = "/inventarios/listar", method = RequestMethod.GET)
public ModelAndView listarestoques() {
List<Estoque> listaestoques = estoqueService.getListaEstoques();

ModelAndView model = new ModelAndView("/estoque/exibirestoques");
ModelAndView model = new ModelAndView("/inventario/exibirestoques");
model.addObject("listaestoques", listaestoques);

return model;
}

@RequestMapping(value = "/estoques/adicionarEstoque")
@RequestMapping(value = "/inventarios/adicionarEstoque")
public ModelAndView exibirInclusaoEstoque(Estoque estoque) {

ModelAndView model = new ModelAndView("/estoque/incluirEstoque");
ModelAndView model = new ModelAndView("/inventario/incluirEstoque");
model.addObject("estoque", estoque);

return model;
}

@RequestMapping(value = "/estoques/alterarEstoque")
@RequestMapping(value = "/inventarios/alterarEstoque")
public ModelAndView exibirAlteracaoEstoque(Estoque estoque) {

ModelAndView model = new ModelAndView("/estoque/editarEstoque");
ModelAndView model = new ModelAndView("/inventario/editarEstoque");
model.addObject("estoque", estoque);

return model;
}

@RequestMapping(value = "/estoques/salvarEstoque", method = RequestMethod.POST)
@RequestMapping(value = "/inventarios/salvarEstoque", method = RequestMethod.POST)
public ModelAndView salvarEstoque(@ModelAttribute("estoque") Estoque estoque) {

estoqueService.salvarEstoque(estoque);
return new ModelAndView("redirect:/estoques/listar");
return new ModelAndView("redirect:/produtos/listar");
}

@RequestMapping(value = "/estoques/editarEstoque/{id}", method = RequestMethod.GET)
public ModelAndView editarEstoque(@PathVariable("id") ObjectId id) throws ResourceNotFoundException {

@RequestMapping(value = "/inventarios/editarEstoque/{id}", method = RequestMethod.GET)
public ModelAndView editarEstoque(@PathVariable("id") ObjectId id)
throws ResourceNotFoundException {
Estoque estoque = estoqueService.getEstoque(id);

if(estoque.getLote() == null) {
estoque.setLote(UUID.randomUUID().toString());
}

return exibirAlteracaoEstoque(estoque);
}

@RequestMapping(value = "/estoques/removerEstoque/{id}", method = RequestMethod.GET)
@RequestMapping(value = "/inventarios/removerEstoque/{id}", method = RequestMethod.GET)
public ModelAndView removerEstoque(@PathVariable("id") ObjectId id) throws ResourceNotFoundException {

estoqueService.removerEstoque(id);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package br.com.aioprojs.controleestoque.controller;

import java.util.List;
import java.util.UUID;

import org.bson.types.ObjectId;
import org.slf4j.Logger;
Expand Down Expand Up @@ -68,7 +69,7 @@ public ModelAndView exibirInclusaoProduto(Produto produto) {
@GetMapping("/produtos/editarProduto")
public ModelAndView exibirAlteracaoProduto(Produto produto) {

ModelAndView model = new ModelAndView("/produto/incluirProduto");
ModelAndView model = new ModelAndView("/produto/alterarProduto");
model.addObject("produto", produto);

List<CategoriaProduto> listaCategorias = categoriaProdutoSercice.getListaCategorias();
Expand All @@ -84,11 +85,14 @@ public ModelAndView exibirAlteracaoProduto(Produto produto) {
public ModelAndView salvarProduto(@ModelAttribute("produto") Produto produto) {
LOG.debug("Persistência do produto na base.");

Estoque estoque = new Estoque();
estoque.setQuantidade(0);
estoque = (Estoque) estoqueService.salvarEstoque(estoque);

produto.setEstoque(estoque);
if(produto.getEstoque() == null) {
Estoque estoque = new Estoque();
estoque.setLote(UUID.randomUUID().toString());
estoque.setQuantidade(0);
estoque = (Estoque) estoqueService.salvarEstoque(estoque);

produto.setEstoque(estoque);
}

produtoService.salvarProduto(produto);
return new ModelAndView("redirect:/produtos/listar");
Expand All @@ -103,10 +107,10 @@ public ModelAndView alterarProduto(@PathVariable("id") ObjectId id) throws Resou
}

@GetMapping("/produtos/deletarProduto/{id}")
public ModelAndView deletarProduto(@PathVariable("id") ObjectId produtoId) throws ResourceNotFoundException {
public ModelAndView deletarProduto(@PathVariable("id") ObjectId id) throws ResourceNotFoundException {
LOG.debug("Remoção de produto.");

produtoService.removerProduto(produtoId);
produtoService.removerProduto(id);
return new ModelAndView("redirect:/produtos/listar");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@
public class Estoque {

@Id private ObjectId id;
private Integer identificador;
@Indexed
private String codigo;
@Indexed private String lote;
private boolean bloqueado;
private int quantidade;
private int minimo;
private int maximo;
Expand All @@ -23,22 +22,12 @@ public Estoque() {
super();
}

public Estoque(Integer id, String codigo, int quantidade, int minimo, int maximo, Produto produto) {
super();
this.identificador = id;
this.codigo = codigo;
this.quantidade = quantidade;
this.minimo = minimo;
this.maximo = maximo;
this.produto = produto;
}

public Estoque(ObjectId id, Integer identificador, String codigo, int quantidade, int minimo, int maximo,
Produto produto) {
public Estoque(ObjectId id, String lote, boolean bloqueado, int quantidade, int minimo,
int maximo, Produto produto) {
super();
this.id = id;
this.identificador = identificador;
this.codigo = codigo;
this.lote = lote;
this.bloqueado = bloqueado;
this.quantidade = quantidade;
this.minimo = minimo;
this.maximo = maximo;
Expand All @@ -52,21 +41,21 @@ public ObjectId getId() {
public void setId(ObjectId id) {
this.id = id;
}

public Integer getIdentificador() {
return identificador;
public String getLote() {
return lote;
}

public void setIdentificador(Integer id) {
this.identificador = id;
public void setLote(String codigoLote) {
this.lote = codigoLote;
}
public String getCodigo() {
return codigo;

public boolean isBloqueado() {
return bloqueado;
}

public void setCodigo(String codigo) {
this.codigo = codigo;
public void setBloqueado(boolean bloqueado) {
this.bloqueado = bloqueado;
}

public int getQuantidade() {
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<!DOCTYPE html>
<html lang="en"
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorator="default">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Controle de Estoque</title>
<link rel="stylesheet" type="text/css" href= "/css/bootstrap.min.css" />
</head>
<body>
<div class="container">
<div class="col-md-offset-2 col-md-7">
<h3 class="text-center">Formulário de cadastro de produtos</h3>
<div class="panel panel-info">
<div class="panel-heading">
<div class="panel-title">Editar Estoque</div>
</div>
<div class="panel-body">
<form action="#" th:action="@{/inventarios/salvarEstoque}" class="form-horizontal"
method="post" th:object="${estoque}">

<input type="hidden" th:field="*{id}"/>
<div class="form-group">
<label for="lote" class="col-md-3 control-label">Lote</label>
<div class="col-md-9">
<input th:field="*{lote}" class="form-control" />
</div>
<label for="lote" class="col-md-3 control-label">Bloqueado</label>
<div class="col-md-9">
<input type="checkbox" name="bloqueado" th:checked="${bloqueado}"/>
</div>
</div>
<div class="form-group">
<label for="quantidade" class="col-md-3 control-label">Quantidade</label>
<div class="col-md-9">
<input th:field="*{quantidade}" class="form-control" />
</div>
</div>
<div class="form-group">
<label for="minimo" class="col-md-3 control-label">Mínimo</label>
<div class="col-md-9">
<input th:field="*{minimo}" class="form-control" />
</div>
</div>
<div class="form-group">
<label for="maximo" class="col-md3 control-label">Máximo</label>
<div class="col-md-9">
<input th:field="*{maximo}" class="form-control"/>
</div>
</div>

<div class="form-group">
<div class="col-md-offset-3 col-md-9">
<button class="btn btn-primary">Confirmar</button>
</div>
</div>

</form>
</div>
</div>
</div>
</div>

<script type="text/javascript" src="/js/jquery-3.4.1.min.js" /></script>
<script type="text/javascript" src="/js/bootstrap.min.js" /></script>
</body>
</html>

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,15 @@
<h3 class="text-center">Formulário de cadastro de produtos</h3>
<div class="panel panel-info">
<div class="panel-heading">
<div class="panel-title">Add Produto</div>
<div class="panel-title">Adicionar Produto</div>
</div>
<div class="panel-body">
<form action="#" th:action="@{/produtos/salvarProduto}" class="form-horizontal"
method="post" th:object="${produto}">

<!-- need to associate this data with produto id -->
<input type="hidden" th:field="*{databaseId}"/>
<input type="hidden" th:field="*{categoria.databaseId}"/>
<input type="hidden" th:field="*{fornecedor.databaseId}"/>
<input type="hidden" th:field="*{estoque.databaseId}"/>
<input type="hidden" th:field="*{id}"/>
<input type="hidden" th:field="*{produto.estoque.id}"/>

<div class="form-group">
<label for="nome" class="col-md-3 control-label">Nome</label>
Expand All @@ -39,15 +37,21 @@ <h3 class="text-center">Formulário de cadastro de produtos</h3>
</div>
</div>
<div class="form-group">
<label for="categoria" class="col-md-3 control-label">Categoria</label>
<label for="categoria" class="col-md-3 control-label">Categoria</label>
<div class="col-md-9">
<input th:field="*{categoria.nome}" class="form-control" />
<select th:field="*{categoria}" class="form-control">
<option value=""> -- </option>
<option th:each="categoria : ${listaCategorias}" th:value="${categoria.id}" th:utext="${categoria.nome}"> </option>
</select>
</div>
</div>
<div class="form-group">
<label for="fornecedor" class="col-md3 control-label">Fornecedor</label>
<div class="col-md-9">
<input th:field="*{fornecedor.nome}" class="form-control"/>
<select th:field="*{fornecedor}" class="form-control">
<option value=""> -- </option>
<option th:each="fornecedor : ${listaFornecedores}" th:value="${fornecedor.id}" th:utext="${fornecedor.nome}"> </option>
</select>
</div>
</div>

Expand Down
Loading

0 comments on commit ad8daa2

Please sign in to comment.