From d1a2613411dcb7729bc429a7a8c6910e1d22653a Mon Sep 17 00:00:00 2001 From: Luiz Eduardo Costa Date: Mon, 4 Oct 2021 09:08:31 -0300 Subject: [PATCH] Investment reports. --- .../controller/RelatoriosController.java | 25 +++++++++++++++++++ .../br/com/carteira/dto/ItemCarteiraDTO.java | 13 ++++++++++ .../br/com/carteira/dto/TransacaoDTO.java | 1 - .../br/com/carteira/dto/UsuarioFormDTO.java | 2 +- .../java/br/com/carteira/model/Usuario.java | 5 ++++ .../repository/TransacaoRepository.java | 12 +++++++++ .../carteira/service/RelatorioService.java | 22 ++++++++++++++++ .../com/carteira/service/UsuarioService.java | 1 + 8 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 src/main/java/br/com/carteira/controller/RelatoriosController.java create mode 100644 src/main/java/br/com/carteira/dto/ItemCarteiraDTO.java create mode 100644 src/main/java/br/com/carteira/service/RelatorioService.java diff --git a/src/main/java/br/com/carteira/controller/RelatoriosController.java b/src/main/java/br/com/carteira/controller/RelatoriosController.java new file mode 100644 index 0000000..358ee3b --- /dev/null +++ b/src/main/java/br/com/carteira/controller/RelatoriosController.java @@ -0,0 +1,25 @@ +package br.com.carteira.controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import br.com.carteira.dto.ItemCarteiraDTO; +import br.com.carteira.service.RelatorioService; + +@RestController +@RequestMapping("/relatorios") +public class RelatoriosController { + + @Autowired + private RelatorioService service; + + @GetMapping("/carteira") + public List relatorioCarteiraDeInvestimentos() + { + return service.relatorioCarteiraDeInvestimentos(); + } +} diff --git a/src/main/java/br/com/carteira/dto/ItemCarteiraDTO.java b/src/main/java/br/com/carteira/dto/ItemCarteiraDTO.java new file mode 100644 index 0000000..4056715 --- /dev/null +++ b/src/main/java/br/com/carteira/dto/ItemCarteiraDTO.java @@ -0,0 +1,13 @@ +package br.com.carteira.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class ItemCarteiraDTO { + + private String ticker; + private Long quantidade; + private Double percentual; +} diff --git a/src/main/java/br/com/carteira/dto/TransacaoDTO.java b/src/main/java/br/com/carteira/dto/TransacaoDTO.java index d6b552e..294003a 100644 --- a/src/main/java/br/com/carteira/dto/TransacaoDTO.java +++ b/src/main/java/br/com/carteira/dto/TransacaoDTO.java @@ -1,7 +1,6 @@ package br.com.carteira.dto; import java.math.BigDecimal; -import java.time.LocalDate; import br.com.carteira.model.TipoTransacao; import lombok.AllArgsConstructor; diff --git a/src/main/java/br/com/carteira/dto/UsuarioFormDTO.java b/src/main/java/br/com/carteira/dto/UsuarioFormDTO.java index f55262f..6032805 100644 --- a/src/main/java/br/com/carteira/dto/UsuarioFormDTO.java +++ b/src/main/java/br/com/carteira/dto/UsuarioFormDTO.java @@ -11,7 +11,7 @@ public class UsuarioFormDTO { @NotBlank(message = "Name is required!") - @Size(min=2, max = 20, message = "Name should be between 2 and 20 chars.") + @Size(min=2, max = 40, message = "Name should be between 2 and 20 chars.") private String nome; @NotBlank(message = "Login is required!") diff --git a/src/main/java/br/com/carteira/model/Usuario.java b/src/main/java/br/com/carteira/model/Usuario.java index 8221987..d3504e7 100644 --- a/src/main/java/br/com/carteira/model/Usuario.java +++ b/src/main/java/br/com/carteira/model/Usuario.java @@ -27,4 +27,9 @@ public class Usuario { private String nome; private String login; private String senha; + + public void setSenha() + { + this.senha = new String("@!"+nome.substring(0, 3).toUpperCase().concat(login.substring(0, 3))); + } } diff --git a/src/main/java/br/com/carteira/repository/TransacaoRepository.java b/src/main/java/br/com/carteira/repository/TransacaoRepository.java index 3762973..0e36f98 100644 --- a/src/main/java/br/com/carteira/repository/TransacaoRepository.java +++ b/src/main/java/br/com/carteira/repository/TransacaoRepository.java @@ -1,9 +1,21 @@ package br.com.carteira.repository; +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import br.com.carteira.dto.ItemCarteiraDTO; import br.com.carteira.model.Transacao; public interface TransacaoRepository extends JpaRepository { + @Query("SELECT new br.com.carteira.dto.ItemCarteiraDTO(" + + "t.ticker, " + + "sum(t.quantidade), " + + "sum(t.quantidade) * 1.0 / (SELECT sum(t2.quantidade) FROM Transacao t2) *1.0) " + + "from Transacao t " + + "GROUP BY t.ticker") + List relatorioCarteiraDeInvestimentos(); + } diff --git a/src/main/java/br/com/carteira/service/RelatorioService.java b/src/main/java/br/com/carteira/service/RelatorioService.java new file mode 100644 index 0000000..c79bd0f --- /dev/null +++ b/src/main/java/br/com/carteira/service/RelatorioService.java @@ -0,0 +1,22 @@ +package br.com.carteira.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import br.com.carteira.dto.ItemCarteiraDTO; +import br.com.carteira.repository.TransacaoRepository; + +@Service +public class RelatorioService { + + @Autowired + private TransacaoRepository repository; + + public List relatorioCarteiraDeInvestimentos() + { + return repository.relatorioCarteiraDeInvestimentos(); + } + +} diff --git a/src/main/java/br/com/carteira/service/UsuarioService.java b/src/main/java/br/com/carteira/service/UsuarioService.java index 133f13a..e419f31 100644 --- a/src/main/java/br/com/carteira/service/UsuarioService.java +++ b/src/main/java/br/com/carteira/service/UsuarioService.java @@ -27,6 +27,7 @@ public Page listar(Pageable paginacao) public void cadastrar(UsuarioFormDTO dto) { Usuario usuario = modelMapper.map(dto, Usuario.class); + usuario.setSenha(); usuarioRepository.save(usuario); }