Skip to content

Commit ce2df11

Browse files
add dates to control page carteira
1 parent 17ad20a commit ce2df11

4 files changed

Lines changed: 32 additions & 30 deletions

File tree

src/main/java/com/virtusconsultoria/controllers/CarteiraController.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
import com.virtusconsultoria.dtos.carteira.CarteiraSupervisorDto;
44
import com.virtusconsultoria.service.CarteiraService;
55
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.format.annotation.DateTimeFormat;
67
import org.springframework.http.ResponseEntity;
7-
import org.springframework.web.bind.annotation.GetMapping;
8-
import org.springframework.web.bind.annotation.PathVariable;
9-
import org.springframework.web.bind.annotation.RequestMapping;
10-
import org.springframework.web.bind.annotation.RestController;
8+
import org.springframework.web.bind.annotation.*;
119

10+
import java.time.LocalDate;
1211
import java.util.List;
1312

1413
@RestController
@@ -19,12 +18,17 @@ public class CarteiraController {
1918
private CarteiraService carteiraService;
2019

2120
@GetMapping
22-
public ResponseEntity<List<CarteiraSupervisorDto>> listarTodasCarteiras() {
23-
return ResponseEntity.ok(carteiraService.getTodasCarteiras());
21+
public ResponseEntity<List<CarteiraSupervisorDto>> listarTodasCarteiras(
22+
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate dataInicio,
23+
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate dataFim) {
24+
return ResponseEntity.ok(carteiraService.getTodasCarteiras(dataInicio, dataFim));
2425
}
2526

2627
@GetMapping("/{id}")
27-
public ResponseEntity<CarteiraSupervisorDto> buscarCarteiraPorId(@PathVariable Long id) {
28-
return ResponseEntity.ok(carteiraService.getCarteiraPorId(id));
28+
public ResponseEntity<CarteiraSupervisorDto> buscarCarteiraPorId(
29+
@PathVariable Long id,
30+
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate dataInicio,
31+
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate dataFim) {
32+
return ResponseEntity.ok(carteiraService.getCarteiraPorId(id, dataInicio, dataFim));
2933
}
30-
}
34+
}

src/main/java/com/virtusconsultoria/controllers/VendaController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public List<VendaResponseDto> listarVendas() {
6060

6161
@GetMapping("/topVendedores/{dataInicial}/{dataFinal}")
6262
@ResponseStatus(HttpStatus.OK)
63-
public List<Map<String, Object>> buscarVendedores( // <-- Mude para Object aqui também
63+
public List<Map<String, Object>> buscarVendedores(
6464
@PathVariable LocalDate dataInicial,
6565
@PathVariable LocalDate dataFinal
6666
){

src/main/java/com/virtusconsultoria/repository/VendaRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ public interface VendaRepository extends JpaRepository<Venda, Long> {
2727
@Query("SELECT SUM(v.comissaoColaborador) FROM Venda v WHERE v.colaborador.ID_COLABORADOR = :colaboradorId AND v.dataPagamento BETWEEN :inicio AND :fim")
2828
BigDecimal sumComissaoByColaboradorInPeriod(@Param("colaboradorId") Long colaboradorId, @Param("inicio") LocalDate inicio, @Param("fim") LocalDate fim);
2929

30+
@Query("SELECT SUM(v.comissaoColaborador) FROM Venda v WHERE v.colaborador.ID_COLABORADOR = :colaboradorId")
31+
BigDecimal sumAllComissaoByColaborador(@Param("colaboradorId") Long colaboradorId);
32+
3033
@Query("SELECT SUM(v.valorLiberado) FROM Venda v WHERE (v.colaborador.supervisor.ID_SUPERVISOR = :supervisorId OR v.supervisor.ID_SUPERVISOR = :supervisorId) AND v.dataPagamento BETWEEN :inicio AND :fim")
3134
BigDecimal sumVendasBySupervisorAndEquipeInPeriod(@Param("supervisorId") Long supervisorId, @Param("inicio") LocalDate inicio, @Param("fim") LocalDate fim);
3235

src/main/java/com/virtusconsultoria/service/CarteiraService.java

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -32,29 +32,31 @@ public class CarteiraService {
3232
@Autowired
3333
private ColaboradorRepository colaboradorRepository;
3434

35-
public List<CarteiraSupervisorDto> getTodasCarteiras() {
35+
public List<CarteiraSupervisorDto> getTodasCarteiras(LocalDate dataInicio, LocalDate dataFim) {
36+
LocalDate inicio = dataInicio != null ? dataInicio : YearMonth.now().atDay(1);
37+
LocalDate fim = dataFim != null ? dataFim : YearMonth.now().atEndOfMonth();
38+
3639
return supervisorRepository.findAll().stream()
37-
.map(this::buildCarteiraDtoParaSupervisor)
40+
.map(supervisor -> buildCarteiraDtoParaSupervisor(supervisor, inicio, fim))
3841
.collect(Collectors.toList());
3942
}
4043

41-
public CarteiraSupervisorDto getCarteiraPorId(Long supervisorId) {
44+
public CarteiraSupervisorDto getCarteiraPorId(Long supervisorId, LocalDate dataInicio, LocalDate dataFim) {
45+
LocalDate inicio = dataInicio != null ? dataInicio : YearMonth.now().atDay(1);
46+
LocalDate fim = dataFim != null ? dataFim : YearMonth.now().atEndOfMonth();
47+
4248
Supervisor supervisor = supervisorRepository.findById(supervisorId)
4349
.orElseThrow(() -> new RuntimeException("Supervisor não encontrado"));
44-
return buildCarteiraDtoParaSupervisor(supervisor);
50+
return buildCarteiraDtoParaSupervisor(supervisor, inicio, fim);
4551
}
4652

47-
private CarteiraSupervisorDto buildCarteiraDtoParaSupervisor(Supervisor supervisor) {
48-
LocalDate inicioMes = YearMonth.now().atDay(1);
49-
LocalDate fimMes = YearMonth.now().atEndOfMonth();
50-
53+
private CarteiraSupervisorDto buildCarteiraDtoParaSupervisor(Supervisor supervisor, LocalDate inicio, LocalDate fim) {
5154
// Calcula performance para cada colaborador da equipe
5255
List<CarteiraColaboradorDto> colaboradoresDto = Optional.ofNullable(supervisor.getColaboradores())
5356
.orElse(Collections.emptyList()).stream()
54-
.map(colaborador -> calcularPerformanceColaborador(colaborador, inicioMes, fimMes))
57+
.map(colaborador -> calcularPerformanceColaborador(colaborador, inicio, fim))
5558
.collect(Collectors.toList());
5659

57-
5860
// Soma os totais da equipe
5961
BigDecimal totalVendasEquipe = colaboradoresDto.stream()
6062
.map(CarteiraColaboradorDto::totalVendas)
@@ -65,7 +67,7 @@ private CarteiraSupervisorDto buildCarteiraDtoParaSupervisor(Supervisor supervis
6567
.reduce(BigDecimal.ZERO, BigDecimal::add);
6668

6769
// Calcula o atingimento da meta da equipe/supervisor
68-
double metaGeralAtingimento = metaRepository.findBySupervisorAndDateRange(supervisor.getID_SUPERVISOR(), inicioMes, fimMes)
70+
double metaGeralAtingimento = metaRepository.findBySupervisorAndDateRange(supervisor.getID_SUPERVISOR(), inicio, fim)
6971
.map(meta -> calcularProgresso(meta.getValorMeta(), totalVendasEquipe))
7072
.orElse(0.0);
7173

@@ -83,21 +85,14 @@ private CarteiraSupervisorDto buildCarteiraDtoParaSupervisor(Supervisor supervis
8385
}
8486

8587
private CarteiraColaboradorDto calcularPerformanceColaborador(Colaborador col, LocalDate inicio, LocalDate fim) {
86-
LocalDate inicioMes = YearMonth.now().atDay(1);
87-
LocalDate fimMes = YearMonth.now().atEndOfMonth();
88-
8988
BigDecimal totalVendas = vendaRepository.sumVendasByColaboradorInPeriod(col.getID_COLABORADOR(), inicio, fim);
9089
BigDecimal totalComissao = vendaRepository.sumComissaoByColaboradorInPeriod(col.getID_COLABORADOR(), inicio, fim);
9190

9291
double metaAtingimento = metaRepository.findByColaboradorAndDateRange(col.getID_COLABORADOR(), inicio, fim)
9392
.map(meta -> calcularProgresso(meta.getValorMeta(), totalVendas))
9493
.orElse(0.0);
9594

96-
long vendasRealizadas = colaboradorRepository.findAll()
97-
.stream()
98-
.map(colaborador -> vendaRepository.countVendasByColaboradorInPeriod(colaborador, inicioMes, fimMes))
99-
.count();
100-
95+
long vendasRealizadas = vendaRepository.countVendasByColaboradorInPeriod(col, inicio, fim);
10196

10297
long clientesAtivos = clienteRepository
10398
.findClientesAtivosByColaborador(col.getID_COLABORADOR())
@@ -130,4 +125,4 @@ private double calcularProgresso(BigDecimal valorMeta, BigDecimal valorRealizado
130125
return valorRealizado.divide(valorMeta, 4, RoundingMode.HALF_UP)
131126
.multiply(new BigDecimal("100")).doubleValue();
132127
}
133-
}
128+
}

0 commit comments

Comments
 (0)