package br.com.ec.domain.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.primefaces.PrimeFaces;
import org.primefaces.model.charts.ChartData;
import org.primefaces.model.charts.axes.cartesian.CartesianScales;
import org.primefaces.model.charts.axes.cartesian.linear.CartesianLinearAxes;
import org.primefaces.model.charts.axes.cartesian.linear.CartesianLinearTicks;
import org.primefaces.model.charts.bar.BarChartDataSet;
import org.primefaces.model.charts.bar.BarChartModel;
import org.primefaces.model.charts.bar.BarChartOptions;
import org.primefaces.model.charts.optionconfig.legend.Legend;
import org.primefaces.model.charts.optionconfig.legend.LegendLabel;
import org.primefaces.model.charts.optionconfig.title.Title;
import org.primefaces.model.charts.pie.PieChartDataSet;
import org.primefaces.model.charts.pie.PieChartModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import br.com.ec.core.generic.AbstractService;
import br.com.ec.core.generic.GenericRepository;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.StringUtil;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.core.validador.Validador;
import br.com.ec.domain.dto.AvaliacaoFuncionarioDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaVendasDTO;
import br.com.ec.domain.dto.grafico.GraficoBarraDTO;
import br.com.ec.domain.dto.grafico.GraficoDTO;
import br.com.ec.domain.dto.grafico.GraficoDadoDTO;
import br.com.ec.domain.dto.grafico.GraficoPizzaDTO;
import br.com.ec.domain.model.tipos.TipoProduto;
import br.com.ec.domain.service.AvaliacaoFuncionarioService;
import br.com.ec.domain.service.GraficoService;
import br.com.ec.domain.service.VendaService;
@Service
public class GraficoServiceImpl
extends AbstractService
<GraficoDTO
> implements GraficoService
{
private VendaService vendaService
;
private AvaliacaoFuncionarioService avaliacaoFuncionarioService
;
@Autowired
public GraficoServiceImpl
(Validador validador, VendaService vendaService, AvaliacaoFuncionarioService avaliacaoFuncionarioService
) {
super(validador
);
this.
vendaService = vendaService
;
this.
avaliacaoFuncionarioService = avaliacaoFuncionarioService
;
}
@
Override
protected GenericRepository
<GraficoDTO
> getRepository
() {
return null;
}
@
Override
public GraficoBarraDTO gerarGraficoVendas
(ParametrosConsultaVendasDTO parametrosConsulta, ParametrosConsultaVendasDTO parametrosConsultaComparativo
) {
GraficoBarraDTO graficoDTO =
new GraficoBarraDTO
();
graficoDTO.
setParametrosConsulta(parametrosConsulta
);
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorDia()) {
graficoDTO.
setDados(preencherDadosComPeriodoEhPorDia
(parametrosConsulta,
"rgba(75, 192, 192, 0.2)",
"rgb(75, 192, 192)"));
graficoDTO.
setTitulo("VENDAS POR DIA");
}
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorMes()) {
graficoDTO.
setDados(preencherDadosComPeriodoEhPorMes
(parametrosConsulta,
"rgba(75, 192, 192, 0.2)",
"rgb(75, 192, 192)"));
graficoDTO.
setTitulo("VENDAS POR MÊS");
}
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorAno()) {
graficoDTO.
setDados(preencherDadosComPeriodoEhPorAno
(parametrosConsulta,
"rgba(75, 192, 192, 0.2)",
"rgb(75, 192, 192)"));
graficoDTO.
setTitulo("VENDAS POR ANO");
}
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhUltimosSeisMeses() ||
parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhUltimosDozeMeses()) {
graficoDTO.
setDados(preencherDadosComPeriodoEhUltimosSeisOuDozeMeses
(parametrosConsulta,
"rgba(75, 192, 192, 0.2)",
"rgb(75, 192, 192)"));
graficoDTO.
setTitulo("VENDAS PELOS ÚLTIMOS MESES");
}
BarChartDataSet barDataSet =
new BarChartDataSet
();
barDataSet.
setLabel("");
barDataSet.
setData(graficoDTO.
getDados().
getValores());
barDataSet.
setBackgroundColor(graficoDTO.
getDados().
getCores());
barDataSet.
setBorderColor(graficoDTO.
getDados().
getBordas());
barDataSet.
setBorderWidth(1);
ChartData dados =
new ChartData
();
dados.
setLabels(graficoDTO.
getDados().
getMarcadores());
if (VerificadorUtil.
naoEstaNulo(parametrosConsultaComparativo
)) {
parametrosConsultaComparativo.
setFormasDePagamentoDTO(parametrosConsulta.
getFormasDePagamentoDTO());
parametrosConsultaComparativo.
setLojasSelecionadasDTO(parametrosConsulta.
getLojasSelecionadasDTO());
parametrosConsultaComparativo.
getParametrosPeriodoDTO().
setTipoPeriodo(parametrosConsulta.
getParametrosPeriodoDTO().
getTipoPeriodo());
GraficoBarraDTO graficoDTOComparativo =
new GraficoBarraDTO
();
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorDia()) {
graficoDTOComparativo.
setDados(preencherDadosComPeriodoEhPorDia
(parametrosConsultaComparativo,
"rgba(255, 205, 86, 0.2)",
"rgb(255, 205, 86)"));
graficoDTOComparativo.
setTitulo("VENDAS POR DIA");
}
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorMes()) {
graficoDTOComparativo.
setDados(preencherDadosComPeriodoEhPorMes
(parametrosConsultaComparativo,
"rgba(255, 205, 86, 0.2)",
"rgb(255, 205, 86)"));
graficoDTOComparativo.
setTitulo("VENDAS POR MÊS");
}
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorAno()) {
graficoDTOComparativo.
setDados(preencherDadosComPeriodoEhPorAno
(parametrosConsultaComparativo,
"rgba(255, 205, 86, 0.2)",
"rgb(255, 205, 86)"));
graficoDTOComparativo.
setTitulo("VENDAS POR ANO");
}
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhUltimosSeisMeses() ||
parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhUltimosDozeMeses()) {
graficoDTOComparativo.
setDados(preencherDadosComPeriodoEhUltimosSeisOuDozeMeses
(parametrosConsultaComparativo,
"rgba(255, 205, 86, 0.2)",
"rgb(255, 205, 86)"));
graficoDTOComparativo.
setTitulo("VENDAS PELOS ÚLTIMOS MESES");
}
BarChartDataSet barDataSetComparativo =
new BarChartDataSet
();
barDataSetComparativo.
setLabel("COMPARATIVO");
barDataSetComparativo.
setData(graficoDTOComparativo.
getDados().
getValores());
barDataSetComparativo.
setBackgroundColor(graficoDTOComparativo.
getDados().
getCores());
barDataSetComparativo.
setBorderColor(graficoDTOComparativo.
getDados().
getBordas());
barDataSetComparativo.
setBorderWidth(1);
dados.
addChartDataSet(barDataSetComparativo
);
}
dados.
addChartDataSet(barDataSet
);
BarChartOptions options =
new BarChartOptions
();
CartesianScales cScales =
new CartesianScales
();
CartesianLinearAxes linearAxes =
new CartesianLinearAxes
();
linearAxes.
setOffset(true);
CartesianLinearTicks ticks =
new CartesianLinearTicks
();
ticks.
setBeginAtZero(true);
linearAxes.
setTicks(ticks
);
cScales.
setDisplay(true);
cScales.
addYAxesData(linearAxes
);
options.
setScales(cScales
);
if (VerificadorUtil.
naoEstaNuloOuVazio(graficoDTO.
getTitulo())) {
Title title =
new Title
();
title.
setDisplay(true);
title.
setText(graficoDTO.
getTitulo());
options.
setTitle(title
);
}
Legend legend =
new Legend
();
legend.
setDisplay(true);
legend.
setPosition("top");
LegendLabel legendLabels =
new LegendLabel
();
legendLabels.
setFontStyle("bold");
legendLabels.
setFontColor("#2980B9");
legendLabels.
setFontSize(24);
legend.
setLabels(legendLabels
);
options.
setLegend(legend
);
BarChartModel graficoBarra =
new BarChartModel
();
graficoBarra.
setData(dados
);
graficoBarra.
setOptions(options
);
graficoBarra.
setExtender("barra");
graficoDTO.
setGraficoBarra(graficoBarra
);
return graficoDTO
;
}
private GraficoDadoDTO preencherDadosComPeriodoEhPorDia
(ParametrosConsultaVendasDTO parametrosConsulta,
String cor,
String corBorda
) {
GraficoDadoDTO dados =
new GraficoDadoDTO
();
Calendar dataInicial = DataUtils.
obterCalendario(DataUtils.
obterData(1,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getMes())-
1,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno())));
int qntMaximaDias = dataInicial.
getActualMaximum(Calendar.
DAY_OF_MONTH);
for (int dia =
1; dia
<= qntMaximaDias
; dia++
) {
Double valorAcumulado =
new Double(0.0);
Date data = DataUtils.
obterData(dia,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getMes())-
1,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno()));
parametrosConsulta.
getParametrosPeriodoDTO().
setDataInicial(data
);
parametrosConsulta.
getParametrosPeriodoDTO().
setDataFinal(data
);
valorAcumulado = vendaService.
obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(parametrosConsulta,
Arrays.
asList(parametrosConsulta.
getFormasDePagamentoDTO()));
dados.
adicionarDados(valorAcumulado, cor, corBorda,
"" + dia
);
}
return dados
;
}
private GraficoDadoDTO preencherDadosComPeriodoEhPorMes
(ParametrosConsultaVendasDTO parametrosConsulta,
String cor,
String corBorda
) {
GraficoDadoDTO dados =
new GraficoDadoDTO
();
for (int mes =
1; mes
<=
12; mes++
) {
Double valorAcumulado =
new Double(0.0);
Calendar dataInicial = DataUtils.
obterCalendario(DataUtils.
obterData(1,
new Integer(mes
)-
1,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno())));
int qntMaximaDias = dataInicial.
getActualMaximum(Calendar.
DAY_OF_MONTH);
Calendar dataFinal = DataUtils.
obterCalendario(DataUtils.
obterData(qntMaximaDias,
new Integer(mes
)-
1,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno())));
parametrosConsulta.
getParametrosPeriodoDTO().
setDataInicial(dataInicial.
getTime());
parametrosConsulta.
getParametrosPeriodoDTO().
setDataFinal(dataFinal.
getTime());
valorAcumulado = vendaService.
obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(
parametrosConsulta,
Arrays.
asList(parametrosConsulta.
getFormasDePagamentoDTO()));
dados.
adicionarDados(valorAcumulado, cor, corBorda,
"" + mes
);
}
return dados
;
}
private GraficoDadoDTO preencherDadosComPeriodoEhPorAno
(ParametrosConsultaVendasDTO parametrosConsulta,
String cor,
String corBorda
) {
GraficoDadoDTO dados =
new GraficoDadoDTO
();
Integer anoInicial =
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno()) -
10;
for (int ano = anoInicial
; ano
<=
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno()); ano++
) {
Double valorAcumulado =
new Double(0.0);
Calendar dataInicial = DataUtils.
obterCalendario(DataUtils.
obterData(1,
0,
new Integer(ano
)));
Calendar dataFinal = DataUtils.
obterCalendario(DataUtils.
obterData(31,
13,
new Integer(ano
)));
parametrosConsulta.
getParametrosPeriodoDTO().
setDataInicial(dataInicial.
getTime());
parametrosConsulta.
getParametrosPeriodoDTO().
setDataFinal(dataFinal.
getTime());
valorAcumulado = vendaService.
obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(parametrosConsulta,
Arrays.
asList(parametrosConsulta.
getFormasDePagamentoDTO()));
dados.
adicionarDados(valorAcumulado, cor, corBorda,
"" + ano
);
}
return dados
;
}
private GraficoDadoDTO preencherDadosComPeriodoEhUltimosSeisOuDozeMeses
(ParametrosConsultaVendasDTO parametrosConsulta,
String cor,
String corBorda
) {
GraficoDadoDTO dados =
new GraficoDadoDTO
();
Integer mesAtual =
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getMes());
Integer anoAtual =
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno());
Integer quantidadeMesesAnteriores =
0;
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhUltimosSeisMeses()) {
quantidadeMesesAnteriores =
7;
}
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhUltimosDozeMeses()) {
quantidadeMesesAnteriores =
13;
}
mesAtual = mesAtual - quantidadeMesesAnteriores +
1;
if (mesAtual
<=
0) {
mesAtual = mesAtual +
12;
anoAtual--
;
}
for (int mes =
1; mes
<= quantidadeMesesAnteriores
; quantidadeMesesAnteriores--
) {
if (mesAtual ==
13) {
mesAtual =
1;
anoAtual++
;
}
Double valorAcumulado =
new Double(0.0);
Calendar dataInicial = DataUtils.
obterCalendario(DataUtils.
obterData(1, mesAtual -
1, anoAtual
));
parametrosConsulta.
getParametrosPeriodoDTO().
setDataInicial(dataInicial.
getTime());
int qntMaximaDias = dataInicial.
getActualMaximum(Calendar.
DAY_OF_MONTH);
parametrosConsulta.
getParametrosPeriodoDTO().
setDataFinal(DataUtils.
obterCalendario(DataUtils.
obterData(qntMaximaDias, mesAtual -
1, anoAtual
)).
getTime());
valorAcumulado = vendaService.
obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(parametrosConsulta,
Arrays.
asList(parametrosConsulta.
getFormasDePagamentoDTO()));
String descricaoLinha = mesAtual.
toString() +
"/" + anoAtual
;
mesAtual++
;
dados.
adicionarDados(valorAcumulado, cor, corBorda,
"" + descricaoLinha
);
}
return dados
;
}
@
Override
public GraficoBarraDTO gerarGraficoPercentuaisMeta
(ParametrosConsultaVendasDTO parametrosConsulta
) {
GraficoBarraDTO graficoDTO =
new GraficoBarraDTO
();
graficoDTO.
setParametrosConsulta(parametrosConsulta
);
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorMes()) {
GraficoDadoDTO dados =
new GraficoDadoDTO
();
for (int mes =
1; mes
<=
12; mes++
) {
Double valorAcumulado =
new Double(0.0);
Calendar dataInicial = DataUtils.
obterCalendario(DataUtils.
obterData(1,
new Integer(mes
)-
1,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno())));
int qntMaximaDias = dataInicial.
getActualMaximum(Calendar.
DAY_OF_MONTH);
Calendar dataFinal = DataUtils.
obterCalendario(DataUtils.
obterData(qntMaximaDias,
new Integer(mes
)-
1,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno())));
parametrosConsulta.
getParametrosPeriodoDTO().
setDataInicial(dataInicial.
getTime());
parametrosConsulta.
getParametrosPeriodoDTO().
setDataFinal(dataFinal.
getTime());
valorAcumulado = vendaService.
obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(parametrosConsulta,
null);
AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO =
new AvaliacaoFuncionarioDTO
();
avaliacaoFuncionarioDTO.
setValorTotalVendido(valorAcumulado
);
avaliacaoFuncionarioDTO.
setValorMetaMensal(avaliacaoFuncionarioService.
consultarMetaMensalPelaData(parametrosConsulta.
getVendedorSelecionado().
getSequencialPessoa(), DataUtils.
getDataComHorarioMinimo(parametrosConsulta.
getParametrosPeriodoDTO().
getDataFinal())));
Double valorParaFormatar = avaliacaoFuncionarioDTO.
retornarPercentualRealizado() * 100;
dados.
adicionarDados(valorParaFormatar.
intValue(),
"rgba(75, 192, 192, 0.2)",
"rgb(75, 192, 192)",
"" + mes
);
}
graficoDTO.
setDados(dados
);
graficoDTO.
setTitulo("PERCENTUAIS DA META POR MÊS");
}
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhUltimosSeisMeses() ||
parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhUltimosDozeMeses()) {
GraficoDadoDTO dados =
new GraficoDadoDTO
();
Integer mesAtual =
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getMes());
Integer anoAtual =
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno());
Integer quantidadeMesesAnteriores =
0;
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhUltimosSeisMeses()) {
quantidadeMesesAnteriores =
7;
}
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhUltimosDozeMeses()) {
quantidadeMesesAnteriores =
13;
}
mesAtual = mesAtual - quantidadeMesesAnteriores +
1;
if (mesAtual
<=
0) {
mesAtual = mesAtual +
12;
anoAtual--
;
}
for (int mes =
1; mes
<= quantidadeMesesAnteriores
; quantidadeMesesAnteriores--
) {
if (mesAtual ==
13) {
mesAtual =
1;
anoAtual++
;
}
Double valorAcumulado =
new Double(0.0);
Calendar dataInicial = DataUtils.
obterCalendario(DataUtils.
obterData(1, mesAtual -
1, anoAtual
));
parametrosConsulta.
getParametrosPeriodoDTO().
setDataInicial(dataInicial.
getTime());
int qntMaximaDias = dataInicial.
getActualMaximum(Calendar.
DAY_OF_MONTH);
parametrosConsulta.
getParametrosPeriodoDTO().
setDataFinal(DataUtils.
obterCalendario(DataUtils.
obterData(qntMaximaDias, mesAtual -
1, anoAtual
)).
getTime());
valorAcumulado = vendaService.
obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(parametrosConsulta,
Arrays.
asList(parametrosConsulta.
getFormasDePagamentoDTO()));
String descricaoLinha = mesAtual.
toString() +
"/" + anoAtual
;
mesAtual++
;
AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO =
new AvaliacaoFuncionarioDTO
();
avaliacaoFuncionarioDTO.
setValorTotalVendido(valorAcumulado
);
avaliacaoFuncionarioDTO.
setValorMetaMensal(avaliacaoFuncionarioService.
consultarMetaMensalPelaData(parametrosConsulta.
getVendedorSelecionado().
getSequencialPessoa(), DataUtils.
getDataComHorarioMinimo(parametrosConsulta.
getParametrosPeriodoDTO().
getDataFinal())));
Double valorParaFormatar = avaliacaoFuncionarioDTO.
retornarPercentualRealizado() * 100;
dados.
adicionarDados(valorParaFormatar.
intValue(),
"rgba(75, 192, 192, 0.2)",
"rgb(75, 192, 192)",
"" + descricaoLinha
);
}
graficoDTO.
setDados(dados
);
graficoDTO.
setTitulo("PERCENTUAIS DA META PELOS ÚLTIMOS MESES");
}
if (VerificadorUtil.
estaNulo(graficoDTO.
getDados())) {
return null;
}
BarChartDataSet barDataSet =
new BarChartDataSet
();
barDataSet.
setLabel("");
barDataSet.
setData(graficoDTO.
getDados().
getValores());
barDataSet.
setBackgroundColor(graficoDTO.
getDados().
getCores());
barDataSet.
setBorderColor(graficoDTO.
getDados().
getBordas());
barDataSet.
setBorderWidth(1);
ChartData dados =
new ChartData
();
dados.
setLabels(graficoDTO.
getDados().
getMarcadores());
dados.
addChartDataSet(barDataSet
);
BarChartOptions options =
new BarChartOptions
();
CartesianScales cScales =
new CartesianScales
();
CartesianLinearAxes linearAxes =
new CartesianLinearAxes
();
linearAxes.
setOffset(true);
CartesianLinearTicks ticks =
new CartesianLinearTicks
();
ticks.
setBeginAtZero(true);
linearAxes.
setTicks(ticks
);
cScales.
setDisplay(true);
cScales.
addYAxesData(linearAxes
);
options.
setScales(cScales
);
if (VerificadorUtil.
naoEstaNuloOuVazio(graficoDTO.
getTitulo())) {
Title title =
new Title
();
title.
setDisplay(true);
title.
setText(graficoDTO.
getTitulo());
options.
setTitle(title
);
}
Legend legend =
new Legend
();
legend.
setDisplay(true);
legend.
setPosition("top");
LegendLabel legendLabels =
new LegendLabel
();
legendLabels.
setFontStyle("bold");
legendLabels.
setFontColor("#2980B9");
legendLabels.
setFontSize(24);
legend.
setLabels(legendLabels
);
options.
setLegend(legend
);
BarChartModel graficoBarra =
new BarChartModel
();
graficoBarra.
setData(dados
);
graficoBarra.
setOptions(options
);
graficoBarra.
setExtender("barraPercentuais");
graficoDTO.
setGraficoBarra(graficoBarra
);
return graficoDTO
;
}
@
Override
public GraficoPizzaDTO gerarGraficoVendasPorTiposDeProduto
(ParametrosConsultaVendasDTO parametrosConsulta
) {
GraficoBarraDTO graficoDTO =
new GraficoBarraDTO
();
graficoDTO.
setParametrosConsulta(parametrosConsulta
);
Date periodoInicial =
null;
Date periodoFinal =
null;
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorDia()) {
graficoDTO.
setTitulo("VENDAS POR DIA");
Calendar dataInicial = DataUtils.
obterCalendario(DataUtils.
obterData(1,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getMes())-
1,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno())));
int qntMaximaDias = dataInicial.
getActualMaximum(Calendar.
DAY_OF_MONTH);
periodoInicial = DataUtils.
obterData(1,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getMes())-
1,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno()));
periodoFinal = DataUtils.
obterData(qntMaximaDias,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getMes())-
1,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno()));
} else if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorMes()) {
graficoDTO.
setTitulo("VENDAS POR MÊS");
periodoInicial = DataUtils.
obterData(1,
0,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno()));
periodoFinal = DataUtils.
obterData(31,
11,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno()));
} else if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorAno()) {
graficoDTO.
setTitulo("VENDAS POR ANO");
periodoInicial = DataUtils.
obterData(1,
0,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno())-
10);
periodoFinal = DataUtils.
obterData(31,
11,
new Integer(parametrosConsulta.
getParametrosPeriodoDTO().
getAno()));
} else {
return null;
}
parametrosConsulta.
getParametrosPeriodoDTO().
setDataInicial(periodoInicial
);
parametrosConsulta.
getParametrosPeriodoDTO().
setDataFinal(periodoFinal
);
GraficoDadoDTO dados =
new GraficoDadoDTO
();
Double valorTotal = vendaService.
obterValorTotalBrutoDeVendas(parametrosConsulta
);
for (TipoProduto tipoProduto : TipoProduto.
values()) {
parametrosConsulta.
setTipoProduto(tipoProduto.
getValor());
Double valor = vendaService.
obterValorTotalBrutoDeVendas(parametrosConsulta
);
Double percentual =
(valor / valorTotal
);
dados.
adicionarDados(valor, tipoProduto.
getCorPadrao(),
"#FFFFFF", tipoProduto.
getDescricao() +
" (" + StringUtil.
formatarPercentual(percentual
) +
")");
}
dados.
ordenarPorValor();
graficoDTO.
setDados(dados
);
ChartData dataFP =
new ChartData
();
PieChartDataSet dataSetFP =
new PieChartDataSet
();
dataSetFP.
setData(graficoDTO.
getDados().
getValores());
dataSetFP.
setBackgroundColor(graficoDTO.
getDados().
getCores());
dataSetFP.
setBorderColor(graficoDTO.
getDados().
getBordas());
dataFP.
addChartDataSet(dataSetFP
);
dataFP.
setLabels(graficoDTO.
getDados().
getMarcadores());
GraficoPizzaDTO grafico =
new GraficoPizzaDTO
();
PieChartModel graficoFormasPagamento =
new PieChartModel
();
graficoFormasPagamento.
setData(dataFP
);
grafico.
setGraficoPizza(graficoFormasPagamento
);
return grafico
;
}
@
Override
public GraficoPizzaDTO gerarGraficoVendasPorFormasDePagamento
(ParametrosConsultaVendasDTO parametrosConsulta
) {
GraficoBarraDTO graficoDTO =
new GraficoBarraDTO
();
graficoDTO.
setParametrosConsulta(parametrosConsulta
);
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorDia()) {
graficoDTO.
setDados(preencherDadosComPeriodoEhPorDia
(parametrosConsulta,
"rgba(75, 192, 192, 0.2)",
"rgb(75, 192, 192)"));
graficoDTO.
setTitulo("VENDAS POR DIA");
}
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorMes()) {
graficoDTO.
setDados(preencherDadosComPeriodoEhPorMes
(parametrosConsulta,
"rgba(75, 192, 192, 0.2)",
"rgb(75, 192, 192)"));
graficoDTO.
setTitulo("VENDAS POR MÊS");
}
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhPorAno()) {
graficoDTO.
setDados(preencherDadosComPeriodoEhPorAno
(parametrosConsulta,
"rgba(75, 192, 192, 0.2)",
"rgb(75, 192, 192)"));
graficoDTO.
setTitulo("VENDAS POR ANO");
}
if (parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhUltimosSeisMeses() ||
parametrosConsulta.
getParametrosPeriodoDTO().
tipoPeriodoEhUltimosDozeMeses()) {
graficoDTO.
setDados(preencherDadosComPeriodoEhUltimosSeisOuDozeMeses
(parametrosConsulta,
"rgba(75, 192, 192, 0.2)",
"rgb(75, 192, 192)"));
graficoDTO.
setTitulo("VENDAS PELOS ÚLTIMOS MESES");
}
PieChartModel graficoFormasPagamento =
new PieChartModel
();
ChartData dataFP =
new ChartData
();
PieChartDataSet dataSetFP =
new PieChartDataSet
();
List<Number> valuesFP =
new ArrayList<>();
valuesFP.
add(300);
valuesFP.
add(50);
valuesFP.
add(100);
dataSetFP.
setData(valuesFP
);
List<String> bgColorsFP =
new ArrayList<>();
bgColorsFP.
add("rgb(255, 99, 132)");
bgColorsFP.
add("rgb(54, 162, 235)");
bgColorsFP.
add("rgb(255, 205, 86)");
dataSetFP.
setBackgroundColor(bgColorsFP
);
dataFP.
addChartDataSet(dataSetFP
);
List<String> labelsFP =
new ArrayList<>();
labelsFP.
add("DINHEIRO");
labelsFP.
add("DÉBITO");
labelsFP.
add("CARTÃO À VISTA");
labelsFP.
add("PARCELADO");
dataFP.
setLabels(labelsFP
);
graficoFormasPagamento.
setData(dataFP
);
GraficoPizzaDTO grafico =
new GraficoPizzaDTO
();
grafico.
setGraficoPizza(graficoFormasPagamento
);
return grafico
;
}
}