Skip to content

Commit

Permalink
Merge pull request #7 from julianocanuto/adiciona-custo-dos-produtos
Browse files Browse the repository at this point in the history
Adiciona recurso /estoque/produtos/custo
  • Loading branch information
julianocanuto authored Dec 31, 2021
2 parents b2be2f9 + a6161f7 commit f370348
Show file tree
Hide file tree
Showing 6 changed files with 121 additions and 25 deletions.
Original file line number Diff line number Diff line change
@@ -1,37 +1,13 @@
package com.julianocanuto.controleestoque;

import java.util.List;
import java.util.stream.Collectors;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.julianocanuto.controleestoque.dto.ProdutoNomeQuantidadeDTO;
import com.julianocanuto.controleestoque.repositorios.ProdutoRepository;
import com.julianocanuto.controleestoque.repositorios.projections.ProdutoNomeQuantidadeProjection;

@SpringBootApplication
public class ControleestoqueApplication implements CommandLineRunner {

@Autowired
private ProdutoRepository produtoRepository;
public class ControleestoqueApplication {

public static void main(String[] args) {
SpringApplication.run(ControleestoqueApplication.class, args);
}

@Override
public void run(String... args) throws Exception {

List<ProdutoNomeQuantidadeProjection> list = produtoRepository.getNomeQuantidadeProdutos();
List<ProdutoNomeQuantidadeDTO> listDto = list.stream().map(x -> new ProdutoNomeQuantidadeDTO(x))
.collect(Collectors.toList());

for (ProdutoNomeQuantidadeDTO obj : listDto) {
System.out.println(obj);
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package com.julianocanuto.controleestoque.dto;

import java.io.Serializable;

import com.julianocanuto.controleestoque.repositorios.projections.ProdutoComIngredientesEMedidasParaCustoProjection;

public class ProdutoComIngredientesEMedidasParaCustoDTO implements Serializable {
private static final long serialVersionUID = 1L;

private Long idProduto;
private String nomeProduto;
private Double quantidadeIngrediente;
private Double precoUnitarioIngrediente;
private String unidadeDeMedidaIngrediente;

public ProdutoComIngredientesEMedidasParaCustoDTO() {

}

public ProdutoComIngredientesEMedidasParaCustoDTO(Long idProduto, String nomeProduto, Double quantidadeIngrediente,
Double precoUnitarioIngrediente, String unidadeDeMedidaIngrediente) {
this.idProduto = idProduto;
this.nomeProduto = nomeProduto;
this.quantidadeIngrediente = quantidadeIngrediente;
this.precoUnitarioIngrediente = precoUnitarioIngrediente;
this.unidadeDeMedidaIngrediente = unidadeDeMedidaIngrediente;
}

public ProdutoComIngredientesEMedidasParaCustoDTO(ProdutoComIngredientesEMedidasParaCustoProjection projection) {
idProduto = projection.getIdProduto();
nomeProduto = projection.getNomeProduto();
quantidadeIngrediente = projection.getQuantidadeIngrediente();
precoUnitarioIngrediente = projection.getPrecoUnitarioIngrediente();
unidadeDeMedidaIngrediente = projection.getUnidadeDeMedidaIngrediente();
}

public Long getIdProduto() {
return idProduto;
}

public void setIdProduto(Long idProduto) {
this.idProduto = idProduto;
}

public String getNomeProduto() {
return nomeProduto;
}

public void setNomeProduto(String nomeProduto) {
this.nomeProduto = nomeProduto;
}

public Double getQuantidadeIngrediente() {
return quantidadeIngrediente;
}

public void setQuantidadeIngrediente(Double quantidadeIngrediente) {
this.quantidadeIngrediente = quantidadeIngrediente;
}

public Double getPrecoUnitarioIngrediente() {
return precoUnitarioIngrediente;
}

public void setPrecoUnitarioIngrediente(Double precoUnitarioIngrediente) {
this.precoUnitarioIngrediente = precoUnitarioIngrediente;
}

public String getUnidadeDeMedidaIngrediente() {
return unidadeDeMedidaIngrediente;
}

public void setUnidadeDeMedidaIngrediente(String unidadeDeMedidaIngrediente) {
this.unidadeDeMedidaIngrediente = unidadeDeMedidaIngrediente;
}

@Override
public String toString() {
return "ProdutoComIngredientesEMedidasParaCustoDTO [idProduto=" + idProduto + ", nomeProduto=" + nomeProduto
+ ", quantidadeIngrediente=" + quantidadeIngrediente
+ ", precoUnitarioIngrediente=" + precoUnitarioIngrediente + ", unidadeDeMedidaIngrediente="
+ unidadeDeMedidaIngrediente + "]";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.springframework.stereotype.Repository;

import com.julianocanuto.controleestoque.entidades.Produto;
import com.julianocanuto.controleestoque.repositorios.projections.ProdutoComIngredientesEMedidasParaCustoProjection;
import com.julianocanuto.controleestoque.repositorios.projections.ProdutoNomeQuantidadeProjection;

@Repository
Expand All @@ -18,4 +19,11 @@ public interface ProdutoRepository extends JpaRepository<Produto, Long>{
+ "INNER JOIN TB_ESTOQUE "
+ "ON TB_PRODUTO.estoque_id = TB_ESTOQUE.id")
List<ProdutoNomeQuantidadeProjection> getNomeQuantidadeProdutos();

@Query(nativeQuery = true,
value = "SELECT TB_PRODUTO.ID, TB_PRODUTO.NOME, TB_COMPONENTE.QUANTIDADE, TB_INGREDIENTE.PRECO_UNITARIO, TB_INGREDIENTE.UNIDADE_DE_MEDIDA "
+ "FROM TB_PRODUTO "
+ "INNER JOIN TB_COMPONENTE ON TB_PRODUTO.id = TB_COMPONENTE.produto_id "
+ "INNER JOIN TB_INGREDIENTE ON TB_COMPONENTE.ingrediente_id = tb_ingrediente.id")
List<ProdutoComIngredientesEMedidasParaCustoProjection> getProdutoComIngredientesEMedidasParaCusto();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.julianocanuto.controleestoque.repositorios.projections;

public interface ProdutoComIngredientesEMedidasParaCustoProjection {

Long getIdProduto();
String getNomeProduto();
//String getNomeIngrediente();
Double getQuantidadeIngrediente();
Double getPrecoUnitarioIngrediente();
String getUnidadeDeMedidaIngrediente();
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.springframework.web.bind.annotation.RestController;

import com.julianocanuto.controleestoque.dto.IngredienteIdNomeQuantidadeDTO;
import com.julianocanuto.controleestoque.dto.ProdutoComIngredientesEMedidasParaCustoDTO;
import com.julianocanuto.controleestoque.dto.ProdutoNomeQuantidadeDTO;
import com.julianocanuto.controleestoque.services.IngredienteService;
import com.julianocanuto.controleestoque.services.ProdutoService;
Expand All @@ -31,6 +32,12 @@ public ResponseEntity<List<ProdutoNomeQuantidadeDTO>> getNomeQuantidadeProdutos(
return ResponseEntity.ok().body(listDto);
}

@GetMapping(value = "/produtos/custo")
public ResponseEntity<List<ProdutoComIngredientesEMedidasParaCustoDTO>> getCustoDosProdutos() {
List<ProdutoComIngredientesEMedidasParaCustoDTO> listDto = service.getProdutoComIngredientesEMedidasParaCusto();
return ResponseEntity.ok().body(listDto);
}

@GetMapping(value = "/ingredientes")
public ResponseEntity<List<IngredienteIdNomeQuantidadeDTO>> getIdNomeQuantidadeIngredientes() {
List<IngredienteIdNomeQuantidadeDTO> listDto = ingredienteService.getIdNomeQuantidadeIngredientes();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@
import org.springframework.transaction.annotation.Transactional;

import com.julianocanuto.controleestoque.dto.IngredienteDTO;
import com.julianocanuto.controleestoque.dto.ProdutoComIngredientesEMedidasParaCustoDTO;
import com.julianocanuto.controleestoque.dto.ProdutoDTO;
import com.julianocanuto.controleestoque.dto.ProdutoNomeQuantidadeDTO;
import com.julianocanuto.controleestoque.entidades.Ingrediente;
import com.julianocanuto.controleestoque.entidades.Produto;
import com.julianocanuto.controleestoque.repositorios.IngredienteRepository;
import com.julianocanuto.controleestoque.repositorios.ProdutoRepository;
import com.julianocanuto.controleestoque.repositorios.projections.ProdutoComIngredientesEMedidasParaCustoProjection;
import com.julianocanuto.controleestoque.repositorios.projections.ProdutoNomeQuantidadeProjection;

@Service
Expand Down Expand Up @@ -43,6 +45,13 @@ public List<ProdutoNomeQuantidadeDTO> getNomeQuantidadeProdutos() {
List<ProdutoNomeQuantidadeDTO> listDto = list.stream().map(x -> new ProdutoNomeQuantidadeDTO(x)).collect(Collectors.toList());
return listDto;
}

@Transactional(readOnly = true)
public List<ProdutoComIngredientesEMedidasParaCustoDTO> getProdutoComIngredientesEMedidasParaCusto() {
List<ProdutoComIngredientesEMedidasParaCustoProjection> list = repository.getProdutoComIngredientesEMedidasParaCusto();
List<ProdutoComIngredientesEMedidasParaCustoDTO> listDto = list.stream().map(x -> new ProdutoComIngredientesEMedidasParaCustoDTO(x)).collect(Collectors.toList());
return listDto;
}

@Transactional(readOnly = true)
public ProdutoDTO findById(Long id) {
Expand Down

0 comments on commit f370348

Please sign in to comment.