Subversion Repositories Integrator Subversion

Rev

Rev 274 | Rev 706 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
261 espaco 1
package br.com.ec.domain.service.impl;
2
 
267 espaco 3
import java.util.ArrayList;
264 espaco 4
import java.util.Arrays;
261 espaco 5
import java.util.Calendar;
264 espaco 6
import java.util.Date;
267 espaco 7
import java.util.List;
261 espaco 8
 
705 blopes 9
import org.primefaces.PrimeFaces;
261 espaco 10
import org.primefaces.model.charts.ChartData;
11
import org.primefaces.model.charts.axes.cartesian.CartesianScales;
12
import org.primefaces.model.charts.axes.cartesian.linear.CartesianLinearAxes;
13
import org.primefaces.model.charts.axes.cartesian.linear.CartesianLinearTicks;
14
import org.primefaces.model.charts.bar.BarChartDataSet;
15
import org.primefaces.model.charts.bar.BarChartModel;
16
import org.primefaces.model.charts.bar.BarChartOptions;
17
import org.primefaces.model.charts.optionconfig.legend.Legend;
18
import org.primefaces.model.charts.optionconfig.legend.LegendLabel;
19
import org.primefaces.model.charts.optionconfig.title.Title;
267 espaco 20
import org.primefaces.model.charts.pie.PieChartDataSet;
21
import org.primefaces.model.charts.pie.PieChartModel;
261 espaco 22
import org.springframework.beans.factory.annotation.Autowired;
23
import org.springframework.stereotype.Service;
24
 
25
import br.com.ec.core.generic.AbstractService;
26
import br.com.ec.core.generic.GenericRepository;
27
import br.com.ec.core.util.DataUtils;
268 espaco 28
import br.com.ec.core.util.StringUtil;
264 espaco 29
import br.com.ec.core.util.VerificadorUtil;
261 espaco 30
import br.com.ec.core.validador.Validador;
268 espaco 31
import br.com.ec.domain.dto.AvaliacaoFuncionarioDTO;
261 espaco 32
import br.com.ec.domain.dto.consulta.ParametrosConsultaVendasDTO;
33
import br.com.ec.domain.dto.grafico.GraficoBarraDTO;
34
import br.com.ec.domain.dto.grafico.GraficoDTO;
264 espaco 35
import br.com.ec.domain.dto.grafico.GraficoDadoDTO;
267 espaco 36
import br.com.ec.domain.dto.grafico.GraficoPizzaDTO;
705 blopes 37
import br.com.ec.domain.model.tipos.TipoProduto;
268 espaco 38
import br.com.ec.domain.service.AvaliacaoFuncionarioService;
261 espaco 39
import br.com.ec.domain.service.GraficoService;
40
import br.com.ec.domain.service.VendaService;
41
 
42
@Service
43
public class GraficoServiceImpl extends AbstractService<GraficoDTO> implements GraficoService {
44
 
45
        private VendaService vendaService;
268 espaco 46
        private AvaliacaoFuncionarioService avaliacaoFuncionarioService;
261 espaco 47
 
48
        @Autowired
268 espaco 49
        public GraficoServiceImpl(Validador validador, VendaService vendaService, AvaliacaoFuncionarioService avaliacaoFuncionarioService) {
261 espaco 50
                super(validador);
51
                this.vendaService = vendaService;
268 espaco 52
                this.avaliacaoFuncionarioService = avaliacaoFuncionarioService;
261 espaco 53
        }
54
 
55
        @Override
56
        protected GenericRepository<GraficoDTO> getRepository() {
57
                return null;
58
        }
59
 
60
        @Override
267 espaco 61
        public GraficoBarraDTO gerarGraficoVendas(ParametrosConsultaVendasDTO parametrosConsulta, ParametrosConsultaVendasDTO parametrosConsultaComparativo) {
264 espaco 62
                GraficoBarraDTO graficoDTO = new GraficoBarraDTO();
268 espaco 63
                graficoDTO.setParametrosConsulta(parametrosConsulta);
264 espaco 64
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorDia()) {
267 espaco 65
                        graficoDTO.setDados(preencherDadosComPeriodoEhPorDia(parametrosConsulta, "rgba(75, 192, 192, 0.2)", "rgb(75, 192, 192)"));
264 espaco 66
                        graficoDTO.setTitulo("VENDAS POR DIA");
67
                }
68
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorMes()) {
267 espaco 69
                        graficoDTO.setDados(preencherDadosComPeriodoEhPorMes(parametrosConsulta, "rgba(75, 192, 192, 0.2)", "rgb(75, 192, 192)"));
264 espaco 70
                        graficoDTO.setTitulo("VENDAS POR MÊS");
71
                }
72
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorAno()) {
267 espaco 73
                        graficoDTO.setDados(preencherDadosComPeriodoEhPorAno(parametrosConsulta, "rgba(75, 192, 192, 0.2)", "rgb(75, 192, 192)"));
264 espaco 74
                        graficoDTO.setTitulo("VENDAS POR ANO");
75
                }
76
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhUltimosSeisMeses() ||
77
                                parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhUltimosDozeMeses()) {
267 espaco 78
                        graficoDTO.setDados(preencherDadosComPeriodoEhUltimosSeisOuDozeMeses(parametrosConsulta, "rgba(75, 192, 192, 0.2)", "rgb(75, 192, 192)"));
264 espaco 79
                        graficoDTO.setTitulo("VENDAS PELOS ÚLTIMOS MESES");
80
                }
81
 
261 espaco 82
        BarChartDataSet barDataSet = new BarChartDataSet();
83
        barDataSet.setLabel("");
264 espaco 84
        barDataSet.setData(graficoDTO.getDados().getValores());
85
        barDataSet.setBackgroundColor(graficoDTO.getDados().getCores());
86
        barDataSet.setBorderColor(graficoDTO.getDados().getBordas());
261 espaco 87
        barDataSet.setBorderWidth(1);
267 espaco 88
 
264 espaco 89
        ChartData dados = new ChartData();
267 espaco 90
        dados.setLabels(graficoDTO.getDados().getMarcadores());
91
 
92
        if (VerificadorUtil.naoEstaNulo(parametrosConsultaComparativo)) {
93
                parametrosConsultaComparativo.setFormasDePagamentoDTO(parametrosConsulta.getFormasDePagamentoDTO());
94
                parametrosConsultaComparativo.setLojasSelecionadasDTO(parametrosConsulta.getLojasSelecionadasDTO());
95
                parametrosConsultaComparativo.getParametrosPeriodoDTO().setTipoPeriodo(parametrosConsulta.getParametrosPeriodoDTO().getTipoPeriodo());
96
                GraficoBarraDTO graficoDTOComparativo = new GraficoBarraDTO();
97
                        if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorDia()) {
98
                                graficoDTOComparativo.setDados(preencherDadosComPeriodoEhPorDia(parametrosConsultaComparativo, "rgba(255, 205, 86, 0.2)", "rgb(255, 205, 86)"));
99
                                graficoDTOComparativo.setTitulo("VENDAS POR DIA");
100
                        }
101
                        if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorMes()) {
102
                                graficoDTOComparativo.setDados(preencherDadosComPeriodoEhPorMes(parametrosConsultaComparativo, "rgba(255, 205, 86, 0.2)", "rgb(255, 205, 86)"));
103
                                graficoDTOComparativo.setTitulo("VENDAS POR MÊS");
104
                        }
105
                        if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorAno()) {
106
                                graficoDTOComparativo.setDados(preencherDadosComPeriodoEhPorAno(parametrosConsultaComparativo, "rgba(255, 205, 86, 0.2)", "rgb(255, 205, 86)"));
107
                                graficoDTOComparativo.setTitulo("VENDAS POR ANO");
108
                        }
109
                        if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhUltimosSeisMeses() ||
110
                                        parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhUltimosDozeMeses()) {
111
                                graficoDTOComparativo.setDados(preencherDadosComPeriodoEhUltimosSeisOuDozeMeses(parametrosConsultaComparativo, "rgba(255, 205, 86, 0.2)", "rgb(255, 205, 86)"));
112
                                graficoDTOComparativo.setTitulo("VENDAS PELOS ÚLTIMOS MESES");
113
                        }
114
                BarChartDataSet barDataSetComparativo = new BarChartDataSet();
115
                barDataSetComparativo.setLabel("COMPARATIVO");
116
                barDataSetComparativo.setData(graficoDTOComparativo.getDados().getValores());
117
                barDataSetComparativo.setBackgroundColor(graficoDTOComparativo.getDados().getCores());
118
                barDataSetComparativo.setBorderColor(graficoDTOComparativo.getDados().getBordas());
119
                barDataSetComparativo.setBorderWidth(1);
120
 
121
                dados.addChartDataSet(barDataSetComparativo);
122
        }
123
 
264 espaco 124
        dados.addChartDataSet(barDataSet);
125
 
261 espaco 126
        BarChartOptions options = new BarChartOptions();
127
        CartesianScales cScales = new CartesianScales();
128
        CartesianLinearAxes linearAxes = new CartesianLinearAxes();
129
        linearAxes.setOffset(true);
130
        CartesianLinearTicks ticks = new CartesianLinearTicks();
131
        ticks.setBeginAtZero(true);
132
        linearAxes.setTicks(ticks);
133
        cScales.setDisplay(true);
134
        cScales.addYAxesData(linearAxes);
135
        options.setScales(cScales);
263 espaco 136
 
264 espaco 137
        if (VerificadorUtil.naoEstaNuloOuVazio(graficoDTO.getTitulo())) {
138
                Title title = new Title();
139
                title.setDisplay(true);
140
                        title.setText(graficoDTO.getTitulo());
141
                options.setTitle(title);
142
        }
261 espaco 143
 
144
        Legend legend = new Legend();
145
        legend.setDisplay(true);
146
        legend.setPosition("top");
263 espaco 147
 
261 espaco 148
        LegendLabel legendLabels = new LegendLabel();
149
        legendLabels.setFontStyle("bold");
150
        legendLabels.setFontColor("#2980B9");
151
        legendLabels.setFontSize(24);
152
        legend.setLabels(legendLabels);
153
        options.setLegend(legend);
154
 
264 espaco 155
        BarChartModel graficoBarra = new BarChartModel();
156
        graficoBarra.setData(dados);
261 espaco 157
        graficoBarra.setOptions(options);
263 espaco 158
        graficoBarra.setExtender("barra");
264 espaco 159
 
160
        graficoDTO.setGraficoBarra(graficoBarra);
161
                return graficoDTO;
261 espaco 162
        }
264 espaco 163
 
267 espaco 164
        private GraficoDadoDTO preencherDadosComPeriodoEhPorDia(ParametrosConsultaVendasDTO parametrosConsulta, String cor, String corBorda) {
264 espaco 165
                GraficoDadoDTO dados = new GraficoDadoDTO();
166
        Calendar dataInicial = DataUtils.obterCalendario(DataUtils.obterData(1, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getMes())-1, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno())));
167
                int qntMaximaDias = dataInicial.getActualMaximum(Calendar.DAY_OF_MONTH);
168
                for (int dia = 1; dia <= qntMaximaDias; dia++) {
169
                        Double valorAcumulado = new Double(0.0);
170
                        Date data = DataUtils.obterData(dia, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getMes())-1, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno()));
171
                        parametrosConsulta.getParametrosPeriodoDTO().setDataInicial(data);
172
                        parametrosConsulta.getParametrosPeriodoDTO().setDataFinal(data);
173
                        valorAcumulado = vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(parametrosConsulta, Arrays.asList(parametrosConsulta.getFormasDePagamentoDTO()));
267 espaco 174
                        dados.adicionarDados(valorAcumulado, cor, corBorda, "" + dia);
264 espaco 175
                }
176
                return dados;
177
        }
178
 
267 espaco 179
        private GraficoDadoDTO preencherDadosComPeriodoEhPorMes(ParametrosConsultaVendasDTO parametrosConsulta, String cor, String corBorda) {
264 espaco 180
                GraficoDadoDTO dados = new GraficoDadoDTO();
181
        for (int mes = 1; mes <= 12; mes++) {
182
                        Double valorAcumulado = new Double(0.0);
183
                        Calendar dataInicial = DataUtils.obterCalendario(DataUtils.obterData(1, new Integer(mes)-1, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno())));
184
                        int qntMaximaDias = dataInicial.getActualMaximum(Calendar.DAY_OF_MONTH);
185
                        Calendar dataFinal = DataUtils.obterCalendario(DataUtils.obterData(qntMaximaDias, new Integer(mes)-1, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno())));
186
                        parametrosConsulta.getParametrosPeriodoDTO().setDataInicial(dataInicial.getTime());
187
                        parametrosConsulta.getParametrosPeriodoDTO().setDataFinal(dataFinal.getTime());
188
                        valorAcumulado = vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(
189
                                        parametrosConsulta, Arrays.asList(parametrosConsulta.getFormasDePagamentoDTO()));
267 espaco 190
                        dados.adicionarDados(valorAcumulado, cor, corBorda, "" + mes);
264 espaco 191
                }
192
                return dados;
193
        }
261 espaco 194
 
267 espaco 195
        private GraficoDadoDTO preencherDadosComPeriodoEhPorAno(ParametrosConsultaVendasDTO parametrosConsulta, String cor, String corBorda) {
264 espaco 196
                GraficoDadoDTO dados = new GraficoDadoDTO();
197
        Integer anoInicial = new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno()) - 10;
198
                for (int ano = anoInicial; ano <= new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno()); ano++) {
199
                        Double valorAcumulado = new Double(0.0);
200
                        Calendar dataInicial = DataUtils.obterCalendario(DataUtils.obterData(1, 0, new Integer(ano)));
201
                        Calendar dataFinal = DataUtils.obterCalendario(DataUtils.obterData(31, 13, new Integer(ano)));
202
                        parametrosConsulta.getParametrosPeriodoDTO().setDataInicial(dataInicial.getTime());
203
                        parametrosConsulta.getParametrosPeriodoDTO().setDataFinal(dataFinal.getTime());
204
                        valorAcumulado = vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(parametrosConsulta, Arrays.asList(parametrosConsulta.getFormasDePagamentoDTO()));
267 espaco 205
                dados.adicionarDados(valorAcumulado, cor, corBorda, "" + ano);
264 espaco 206
                }
207
                return dados;
208
        }
209
 
267 espaco 210
        private GraficoDadoDTO preencherDadosComPeriodoEhUltimosSeisOuDozeMeses(ParametrosConsultaVendasDTO parametrosConsulta, String cor, String corBorda) {
264 espaco 211
                GraficoDadoDTO dados = new GraficoDadoDTO();
212
                Integer mesAtual = new Integer(parametrosConsulta.getParametrosPeriodoDTO().getMes());
213
                Integer anoAtual = new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno());
214
                Integer quantidadeMesesAnteriores = 0;
215
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhUltimosSeisMeses()) {
216
                        quantidadeMesesAnteriores = 7;
217
                }
218
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhUltimosDozeMeses()) {
219
                        quantidadeMesesAnteriores = 13;
220
                }
221
 
222
                mesAtual = mesAtual - quantidadeMesesAnteriores + 1;
223
                if (mesAtual <= 0) {
224
                        mesAtual = mesAtual + 12;
225
                        anoAtual--;
226
                }
227
                for (int mes = 1; mes <= quantidadeMesesAnteriores; quantidadeMesesAnteriores--) {
228
                        if (mesAtual == 13) {
229
                                mesAtual = 1;
230
                                anoAtual++;
231
                        }
232
                        Double valorAcumulado = new Double(0.0);
233
                        Calendar dataInicial = DataUtils.obterCalendario(DataUtils.obterData(1, mesAtual - 1, anoAtual));
234
                        parametrosConsulta.getParametrosPeriodoDTO().setDataInicial(dataInicial.getTime());
235
                        int qntMaximaDias = dataInicial.getActualMaximum(Calendar.DAY_OF_MONTH);
236
                        parametrosConsulta.getParametrosPeriodoDTO().setDataFinal(DataUtils.obterCalendario(DataUtils.obterData(qntMaximaDias, mesAtual - 1, anoAtual)).getTime());
237
                        valorAcumulado = vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(parametrosConsulta, Arrays.asList(parametrosConsulta.getFormasDePagamentoDTO()));
238
                        String descricaoLinha = mesAtual.toString() + "/" + anoAtual;
239
                        mesAtual++;
267 espaco 240
                dados.adicionarDados(valorAcumulado, cor, corBorda, "" + descricaoLinha);
264 espaco 241
                }
242
                return dados;
243
        }
244
 
267 espaco 245
        @Override
268 espaco 246
        public GraficoBarraDTO gerarGraficoPercentuaisMeta(ParametrosConsultaVendasDTO parametrosConsulta) {
247
                GraficoBarraDTO graficoDTO = new GraficoBarraDTO();
248
                graficoDTO.setParametrosConsulta(parametrosConsulta);
249
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorMes()) {
250
                        GraficoDadoDTO dados = new GraficoDadoDTO();
251
                for (int mes = 1; mes <= 12; mes++) {
252
                                Double valorAcumulado = new Double(0.0);
253
                                Calendar dataInicial = DataUtils.obterCalendario(DataUtils.obterData(1, new Integer(mes)-1, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno())));
254
                                int qntMaximaDias = dataInicial.getActualMaximum(Calendar.DAY_OF_MONTH);
255
                                Calendar dataFinal = DataUtils.obterCalendario(DataUtils.obterData(qntMaximaDias, new Integer(mes)-1, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno())));
256
                                parametrosConsulta.getParametrosPeriodoDTO().setDataInicial(dataInicial.getTime());
257
                                parametrosConsulta.getParametrosPeriodoDTO().setDataFinal(dataFinal.getTime());
258
                                valorAcumulado = vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(parametrosConsulta, null);
259
 
260
                                AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO = new AvaliacaoFuncionarioDTO();
261
                                avaliacaoFuncionarioDTO.setValorTotalVendido(valorAcumulado);
262
                                avaliacaoFuncionarioDTO.setValorMetaMensal(avaliacaoFuncionarioService.consultarMetaMensalPelaData(parametrosConsulta.getVendedorSelecionado().getSequencialPessoa(), DataUtils.getDataComHorarioMinimo(parametrosConsulta.getParametrosPeriodoDTO().getDataFinal())));
263
                                Double valorParaFormatar = avaliacaoFuncionarioDTO.retornarPercentualRealizado() * 100;
264
                                dados.adicionarDados(valorParaFormatar.intValue(), "rgba(75, 192, 192, 0.2)", "rgb(75, 192, 192)", "" + mes);
265
                        }
266
 
267
                        graficoDTO.setDados(dados);
268
                        graficoDTO.setTitulo("PERCENTUAIS DA META POR MÊS");
269
                }
270
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhUltimosSeisMeses() ||
271
                                parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhUltimosDozeMeses()) {
272
                        GraficoDadoDTO dados = new GraficoDadoDTO();
273
                        Integer mesAtual = new Integer(parametrosConsulta.getParametrosPeriodoDTO().getMes());
274
                        Integer anoAtual = new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno());
275
                        Integer quantidadeMesesAnteriores = 0;
276
                        if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhUltimosSeisMeses()) {
277
                                quantidadeMesesAnteriores = 7;
278
                        }
279
                        if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhUltimosDozeMeses()) {
280
                                quantidadeMesesAnteriores = 13;
281
                        }
282
 
283
                        mesAtual = mesAtual - quantidadeMesesAnteriores + 1;
284
                        if (mesAtual <= 0) {
285
                                mesAtual = mesAtual + 12;
286
                                anoAtual--;
287
                        }
288
                        for (int mes = 1; mes <= quantidadeMesesAnteriores; quantidadeMesesAnteriores--) {
289
                                if (mesAtual == 13) {
290
                                        mesAtual = 1;
291
                                        anoAtual++;
292
                                }
293
                                Double valorAcumulado = new Double(0.0);
294
                                Calendar dataInicial = DataUtils.obterCalendario(DataUtils.obterData(1, mesAtual - 1, anoAtual));
295
                                parametrosConsulta.getParametrosPeriodoDTO().setDataInicial(dataInicial.getTime());
296
                                int qntMaximaDias = dataInicial.getActualMaximum(Calendar.DAY_OF_MONTH);
297
                                parametrosConsulta.getParametrosPeriodoDTO().setDataFinal(DataUtils.obterCalendario(DataUtils.obterData(qntMaximaDias, mesAtual - 1, anoAtual)).getTime());
298
                                valorAcumulado = vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(parametrosConsulta, Arrays.asList(parametrosConsulta.getFormasDePagamentoDTO()));
299
                                String descricaoLinha = mesAtual.toString() + "/" + anoAtual;
300
                                mesAtual++;
301
 
302
                                AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO = new AvaliacaoFuncionarioDTO();
303
                                avaliacaoFuncionarioDTO.setValorTotalVendido(valorAcumulado);
304
                                avaliacaoFuncionarioDTO.setValorMetaMensal(avaliacaoFuncionarioService.consultarMetaMensalPelaData(parametrosConsulta.getVendedorSelecionado().getSequencialPessoa(), DataUtils.getDataComHorarioMinimo(parametrosConsulta.getParametrosPeriodoDTO().getDataFinal())));
305
                                Double valorParaFormatar = avaliacaoFuncionarioDTO.retornarPercentualRealizado() * 100;
306
                                dados.adicionarDados(valorParaFormatar.intValue(), "rgba(75, 192, 192, 0.2)", "rgb(75, 192, 192)", "" + descricaoLinha);
307
                        }
308
 
309
                        graficoDTO.setDados(dados);
310
                        graficoDTO.setTitulo("PERCENTUAIS DA META PELOS ÚLTIMOS MESES");
311
                }
312
 
274 espaco 313
                if (VerificadorUtil.estaNulo(graficoDTO.getDados())) {
314
                        return null;
315
                }
316
 
268 espaco 317
        BarChartDataSet barDataSet = new BarChartDataSet();
318
        barDataSet.setLabel("");
319
        barDataSet.setData(graficoDTO.getDados().getValores());
320
        barDataSet.setBackgroundColor(graficoDTO.getDados().getCores());
321
        barDataSet.setBorderColor(graficoDTO.getDados().getBordas());
322
        barDataSet.setBorderWidth(1);
323
 
324
        ChartData dados = new ChartData();
325
        dados.setLabels(graficoDTO.getDados().getMarcadores());
326
        dados.addChartDataSet(barDataSet);
327
 
328
        BarChartOptions options = new BarChartOptions();
329
        CartesianScales cScales = new CartesianScales();
330
        CartesianLinearAxes linearAxes = new CartesianLinearAxes();
331
        linearAxes.setOffset(true);
332
        CartesianLinearTicks ticks = new CartesianLinearTicks();
333
        ticks.setBeginAtZero(true);
334
        linearAxes.setTicks(ticks);
335
        cScales.setDisplay(true);
336
        cScales.addYAxesData(linearAxes);
337
        options.setScales(cScales);
338
 
339
        if (VerificadorUtil.naoEstaNuloOuVazio(graficoDTO.getTitulo())) {
340
                Title title = new Title();
341
                title.setDisplay(true);
342
                        title.setText(graficoDTO.getTitulo());
343
                options.setTitle(title);
344
        }
345
 
346
        Legend legend = new Legend();
347
        legend.setDisplay(true);
348
        legend.setPosition("top");
349
 
350
        LegendLabel legendLabels = new LegendLabel();
351
        legendLabels.setFontStyle("bold");
352
        legendLabels.setFontColor("#2980B9");
353
        legendLabels.setFontSize(24);
354
        legend.setLabels(legendLabels);
355
        options.setLegend(legend);
356
 
357
        BarChartModel graficoBarra = new BarChartModel();
358
        graficoBarra.setData(dados);
359
        graficoBarra.setOptions(options);
360
        graficoBarra.setExtender("barraPercentuais");
361
 
362
        graficoDTO.setGraficoBarra(graficoBarra);
363
                return graficoDTO;
364
        }
365
 
366
        @Override
705 blopes 367
        public GraficoPizzaDTO gerarGraficoVendasPorTiposDeProduto(ParametrosConsultaVendasDTO parametrosConsulta) {
368
        GraficoBarraDTO graficoDTO = new GraficoBarraDTO();
369
                graficoDTO.setParametrosConsulta(parametrosConsulta);
370
                Date periodoInicial = null;
371
                Date periodoFinal = null;
372
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorDia()) {
373
                        graficoDTO.setTitulo("VENDAS POR DIA");
374
                        Calendar dataInicial = DataUtils.obterCalendario(DataUtils.obterData(1, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getMes())-1, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno())));
375
                        int qntMaximaDias = dataInicial.getActualMaximum(Calendar.DAY_OF_MONTH);
376
                        periodoInicial = DataUtils.obterData(1, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getMes())-1, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno()));
377
                        periodoFinal = DataUtils.obterData(qntMaximaDias, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getMes())-1, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno()));
378
                } if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorMes()) {
379
                        graficoDTO.setTitulo("VENDAS POR MÊS");
380
                        periodoInicial = DataUtils.obterData(1, 0, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno()));
381
                        periodoFinal = DataUtils.obterData(31, 11, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno()));
382
                } if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorAno()) {
383
                        graficoDTO.setTitulo("VENDAS POR ANO");
384
                        periodoInicial = DataUtils.obterData(1, 0, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno())-10);
385
                        periodoFinal = DataUtils.obterData(31, 11, new Integer(parametrosConsulta.getParametrosPeriodoDTO().getAno()));
386
                } else {
387
                        return null;
388
                }
389
 
390
                parametrosConsulta.getParametrosPeriodoDTO().setDataInicial(periodoInicial);
391
                parametrosConsulta.getParametrosPeriodoDTO().setDataFinal(periodoFinal);
392
 
393
                GraficoDadoDTO dados = new GraficoDadoDTO();
394
                Double valorTotal = vendaService.obterValorTotalBrutoDeVendas(parametrosConsulta);
395
                for (TipoProduto tipoProduto : TipoProduto.values()) {
396
                        parametrosConsulta.setTipoProduto(tipoProduto.getValor());
397
                        Double valor = vendaService.obterValorTotalBrutoDeVendas(parametrosConsulta);
398
                        Double percentual = (valor / valorTotal);
399
                        dados.adicionarDados(valor, tipoProduto.getCorPadrao(), "#FFFFFF", tipoProduto.getDescricao() + " (" + StringUtil.formatarPercentual(percentual) + ")");
400
                }
401
                dados.ordenarPorValor();
402
                graficoDTO.setDados(dados);
403
 
404
 
405
                ChartData dataFP = new ChartData();
406
                PieChartDataSet dataSetFP = new PieChartDataSet();
407
                dataSetFP.setData(graficoDTO.getDados().getValores());
408
                dataSetFP.setBackgroundColor(graficoDTO.getDados().getCores());
409
                dataSetFP.setBorderColor(graficoDTO.getDados().getBordas());
410
                dataFP.addChartDataSet(dataSetFP);
411
                dataFP.setLabels(graficoDTO.getDados().getMarcadores());
412
 
413
                GraficoPizzaDTO grafico = new GraficoPizzaDTO();
414
                PieChartModel graficoFormasPagamento = new PieChartModel();
415
                graficoFormasPagamento.setData(dataFP);
416
 
417
                // CONFIGURACOES
418
//              graficoFormasPagamento.setLegendPosition("e");     // l = left, e = right
419
//              graficoFormasPagamento.setShowDataLabels(false);
420
 
421
                grafico.setGraficoPizza(graficoFormasPagamento);
422
                return grafico;
423
        }
424
 
425
        @Override
267 espaco 426
        public GraficoPizzaDTO gerarGraficoVendasPorFormasDePagamento(ParametrosConsultaVendasDTO parametrosConsulta) {
427
                GraficoBarraDTO graficoDTO = new GraficoBarraDTO();
268 espaco 428
                graficoDTO.setParametrosConsulta(parametrosConsulta);
267 espaco 429
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorDia()) {
430
                        graficoDTO.setDados(preencherDadosComPeriodoEhPorDia(parametrosConsulta, "rgba(75, 192, 192, 0.2)", "rgb(75, 192, 192)"));
431
                        graficoDTO.setTitulo("VENDAS POR DIA");
432
                }
433
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorMes()) {
434
                        graficoDTO.setDados(preencherDadosComPeriodoEhPorMes(parametrosConsulta, "rgba(75, 192, 192, 0.2)", "rgb(75, 192, 192)"));
435
                        graficoDTO.setTitulo("VENDAS POR MÊS");
436
                }
437
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhPorAno()) {
438
                        graficoDTO.setDados(preencherDadosComPeriodoEhPorAno(parametrosConsulta, "rgba(75, 192, 192, 0.2)", "rgb(75, 192, 192)"));
439
                        graficoDTO.setTitulo("VENDAS POR ANO");
440
                }
441
                if (parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhUltimosSeisMeses() ||
442
                                parametrosConsulta.getParametrosPeriodoDTO().tipoPeriodoEhUltimosDozeMeses()) {
443
                        graficoDTO.setDados(preencherDadosComPeriodoEhUltimosSeisOuDozeMeses(parametrosConsulta, "rgba(75, 192, 192, 0.2)", "rgb(75, 192, 192)"));
444
                        graficoDTO.setTitulo("VENDAS PELOS ÚLTIMOS MESES");
445
                }
446
 
447
                PieChartModel graficoFormasPagamento = new PieChartModel();
448
        ChartData dataFP = new ChartData();
449
        PieChartDataSet dataSetFP = new PieChartDataSet();
450
        List<Number> valuesFP = new ArrayList<>();
451
        valuesFP.add(300);
452
        valuesFP.add(50);
453
        valuesFP.add(100);
454
        dataSetFP.setData(valuesFP);
455
        List<String> bgColorsFP = new ArrayList<>();
456
        bgColorsFP.add("rgb(255, 99, 132)");
457
        bgColorsFP.add("rgb(54, 162, 235)");
458
        bgColorsFP.add("rgb(255, 205, 86)");
459
        dataSetFP.setBackgroundColor(bgColorsFP);
460
        dataFP.addChartDataSet(dataSetFP);
461
        List<String> labelsFP = new ArrayList<>();
462
        labelsFP.add("DINHEIRO");
463
        labelsFP.add("DÉBITO");
464
        labelsFP.add("CARTÃO À VISTA");
465
        labelsFP.add("PARCELADO");
466
        dataFP.setLabels(labelsFP);
467
        graficoFormasPagamento.setData(dataFP);
468
 
469
        GraficoPizzaDTO grafico = new GraficoPizzaDTO();
470
        grafico.setGraficoPizza(graficoFormasPagamento);
471
 
472
        return grafico;
473
        }
261 espaco 474
}