@@ -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