Subversion Repositories Integrator Subversion

Rev

Rev 195 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller.managedbean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import org.primefaces.model.chart.AxisType;
import org.primefaces.model.chart.LineChartModel;
import org.primefaces.model.chart.LineChartSeries;
import org.springframework.context.annotation.Scope;

import br.com.ec.core.consulta.ParametrosConsulta;
import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.ConsolidadoDTO;
import br.com.ec.domain.dto.GraficoAcumuladoDTO;
import br.com.ec.domain.model.ConsolidadoEstoque;
import br.com.ec.domain.model.Marca;
import br.com.ec.domain.model.Vigencia;
import br.com.ec.domain.service.consolidado.ConsolidadoService;
import br.com.ec.domain.service.marca.MarcaService;
import br.com.ec.domain.service.notafiscal.NotaFiscalService;
import br.com.ec.domain.service.vigencia.VigenciaService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;

@Named
@Scope("view")
public class ConsolidadoBean extends AbstractBean<ConsolidadoDTO> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private List<String> anosSelecionados;
        private List<String> mesesSelecionados;
       
        private List<Vigencia> vigencias;
       
        private Boolean consolidadoEstoquePorMarca;
        private List<ConsolidadoDTO> consolidacaoEstoqueMarca;
        private LineChartModel graficoConsolidacaoEstoqueMarca;
       
        private ConsolidadoService consolidadoService;
        private VigenciaService vigenciaService;
        private MarcaService marcaService;
       
        @Inject
        public ConsolidadoBean(NotaFiscalService notaFiscalService, ConsolidadoService consolidadoService, VigenciaService vigenciaService,
                        MarcaService marcaService) {
                this.consolidadoService = consolidadoService;
                this.vigenciaService = vigenciaService;
                this.marcaService = marcaService;
        }
       
        public List<String> getAnosSelecionados() {
                return anosSelecionados;
        }
        public void setAnosSelecionados(List<String> anosSelecionados) {
                this.anosSelecionados = anosSelecionados;
        }
       
        public List<String> getMesesSelecionados() {
                return mesesSelecionados;
        }
        public void setMesesSelecionados(List<String> mesesSelecionados) {
                this.mesesSelecionados = mesesSelecionados;
        }
       
        public List<Vigencia> getVigencias() {
                return vigencias;
        }
        public void setVigencias(List<Vigencia> vigencias) {
                this.vigencias = vigencias;
        }
       
        public Boolean getConsolidadoEstoquePorMarca() {
                return consolidadoEstoquePorMarca;
        }
        public void setConsolidadoEstoquePorMarca(Boolean consolidadoEstoquePorMarca) {
                this.consolidadoEstoquePorMarca = consolidadoEstoquePorMarca;
        }
       
        public List<ConsolidadoDTO> getConsolidacaoEstoqueMarca() {
                return consolidacaoEstoqueMarca;
        }
        public void setConsolidacaoEstoqueMarca(List<ConsolidadoDTO> consolidacaoEstoqueMarca) {
                this.consolidacaoEstoqueMarca = consolidacaoEstoqueMarca;
        }
       
        public LineChartModel getGraficoConsolidacaoEstoqueMarca() {
                return graficoConsolidacaoEstoqueMarca;
        }
        public void setGraficoConsolidacaoEstoqueMarca(LineChartModel graficoConsolidacaoEstoqueMarca) {
                this.graficoConsolidacaoEstoqueMarca = graficoConsolidacaoEstoqueMarca;
        }
       
        @Override
        public void preCarregamento() {
                entidade = new ConsolidadoDTO();
                parametrosConsulta = new ParametrosConsulta<ConsolidadoDTO>();
                parametrosConsulta.setEntidade(entidade);
        }
       
        @Override
        public void limparEntidade() {
                ConsolidadoDTO ConsolidadoVigencia = new ConsolidadoDTO();
                setEntidade(ConsolidadoVigencia);
        }

        @Override
        public GenericService<ConsolidadoDTO> getService() {
                return null;
        }
       
        @Override
        public ConsolidadoDTO getEntidade() {
                return entidade;
        }

        @Override
        public ConsolidadoDTO getId() {
                return getEntidade();
        }
       
        /*******************************************************/
       
        public void consolidarVigente() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                consolidadoService.consolidarVigencia();
                                LancadorMensagem.lancarSucesso("CONSOLIDAÇÃO REALIZADA COM SUCESSO! ");
                        }
                });
        }
       
        public void consultarConsolidacoes() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                verificarSeVigenciaSelecionada();
                                if (getConsolidadoEstoquePorMarca()) {
                                        List<Vigencia> vigenciasDoAno = vigenciaService.consultarVigenciasDoAno("2021");
                                        vigenciasDoAno.addAll(vigenciaService.consultarVigenciasDoAno("2022"));
                                        List<ConsolidadoEstoque> consolidados = new ArrayList<ConsolidadoEstoque>();
                                        for (Vigencia vigencia : vigenciasDoAno) {
                                                consolidados.addAll(consolidadoService.consultarPorVigencia(vigencia));
                                        }
                                       
                                        List<ConsolidadoDTO> consolidacao = new ArrayList<ConsolidadoDTO>();
                                        for (ConsolidadoEstoque consolidado : consolidados) {
                                                ConsolidadoDTO consolidadoDTO = new ConsolidadoDTO();
                                                consolidadoDTO.setMarca(consolidado.getModelo().getMarca());
                                                consolidadoDTO.setVigencia(consolidado.getVigencia());
                                                Integer quantidadeTotal = consolidado.getQuantidadeEstoque();
                                                if (consolidacao.contains(consolidadoDTO)) {
                                                        ConsolidadoDTO consolidadoAnterior = consolidacao.get(consolidacao.indexOf(consolidadoDTO));
                                                        consolidadoAnterior.setQuantidadeTotal(quantidadeTotal + consolidadoAnterior.getQuantidadeTotal());
                                                } else {
                                                        consolidadoDTO.setQuantidadeTotal(quantidadeTotal);
                                                        consolidacao.add(consolidadoDTO);
                                                }
                                        }
                                        setConsolidacaoEstoqueMarca(consolidacao);
                                       
                                        // linhas ALCATEL
//                                      01/2020, 10
//                                      02/2020, 50
                                       
                                        LineChartModel graficoConsolidacaoEstoqueMarca = new LineChartModel();
                                        List<Marca> marcasAtivas = marcaService.consultarTodos(new Marca());
                                        for (Marca marcaAtiva : marcasAtivas) {
                                                LineChartSeries linha = new LineChartSeries();
                                                for (Vigencia vigencia : vigenciasDoAno) {
                                                        // 06/2020
                                                        Boolean adicionado = false;
                                                        for (ConsolidadoDTO consolidado : consolidacao) {
                                                                if (marcaAtiva.equals(consolidado.getMarca()) &&
                                                                                vigencia.equals(consolidado.getVigencia())) {
                                                                        //consolidado: 06/2020, ALCATEL, 30
                                                                        linha.set(vigencia.getDescricao(), consolidado.getQuantidadeTotal());
                                                                        adicionado = true;
                                                                        break;
                                                                }
                                                        }
                                                        if (!adicionado) {
                                                                linha.set(vigencia.getDescricao(), new Integer(0));
                                                        }
                                                }
                                                linha.setLabel(marcaAtiva.getDescricao());
                                                graficoConsolidacaoEstoqueMarca.addSeries(linha);
                                        }
                                       
                                        /*LineChartSeries linha = new LineChartSeries();
                                        for (Vigencia vigencia : vigenciasDoAno) {
                                                String marca = "";
                                                for (ConsolidadoDTO consolidado : consolidacao) {
                                                        marca = consolidado.getMarca().getDescricao();
                                                        if (vigencia.equals(consolidado.getVigencia())) {
                                                                linha.set(vigencia.getDescricao(), consolidado.getQuantidadeTotal());
                                                        }
                                                }
                                                linha.setLabel(marca);
                                                graficoConsolidacaoEstoqueMarca.addSeries(linha);
                                        }*/

                                       
                                graficoConsolidacaoEstoqueMarca.setTitle("");
                                graficoConsolidacaoEstoqueMarca.setZoom(true);
                                graficoConsolidacaoEstoqueMarca.setShowPointLabels(true);
                                graficoConsolidacaoEstoqueMarca.getAxis(AxisType.Y).setLabel("MARCAS");
                                graficoConsolidacaoEstoqueMarca.getAxis(AxisType.X).setLabel("VIGÊNCIAS");
                                /*
                                DateAxis axis = new DateAxis("VIGÊNCIAS");
                                axis.setTickAngle(-50);
                                axis.setMin("02/2020");
                                axis.setMax("07/2020");
                                axis.setTickFormat("%b %#d, 20%y");
                                graficoConsolidacaoEstoqueMarca.getAxes().put(AxisType.X, axis);
                                */

                                setGraficoConsolidacaoEstoqueMarca(graficoConsolidacaoEstoqueMarca);
                                }
                        }
                });
        }
       
        private LineChartSeries preencherLinha(GraficoAcumuladoDTO graficoLinha, String mes, String ano) {
                LineChartSeries linha = new LineChartSeries();
                Double valorAcumulado = new Double(0.0);
                valorAcumulado = valorAcumulado + graficoLinha.getDIA_01();
        linha.set(ano + "-" + mes + "-" + "01", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_02();
        linha.set(ano + "-" + mes + "-" + "02", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_03();
        linha.set(ano + "-" + mes + "-" + "03", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_04();
        linha.set(ano + "-" + mes + "-" + "04", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_05();
        linha.set(ano + "-" + mes + "-" + "05", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_06();
        linha.set(ano + "-" + mes + "-" + "06", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_07();
        linha.set(ano + "-" + mes + "-" + "07", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_08();
        linha.set(ano + "-" + mes + "-" + "08", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_09();
        linha.set(ano + "-" + mes + "-" + "09", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_10();
        linha.set(ano + "-" + mes + "-" + "10", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_11();
        linha.set(ano + "-" + mes + "-" + "11", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_12();
        linha.set(ano + "-" + mes + "-" + "12", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_13();
        linha.set(ano + "-" + mes + "-" + "13", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_14();
        linha.set(ano + "-" + mes + "-" + "14", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_15();
        linha.set(ano + "-" + mes + "-" + "15", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_16();
        linha.set(ano + "-" + mes + "-" + "16", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_17();
        linha.set(ano + "-" + mes + "-" + "17", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_18();
        linha.set(ano + "-" + mes + "-" + "18", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_19();
        linha.set(ano + "-" + mes + "-" + "19", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_20();
        linha.set(ano + "-" + mes + "-" + "20", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_21();
        linha.set(ano + "-" + mes + "-" + "21", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_22();
        linha.set(ano + "-" + mes + "-" + "22", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_23();
        linha.set(ano + "-" + mes + "-" + "23", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_24();
        linha.set(ano + "-" + mes + "-" + "24", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_25();
        linha.set(ano + "-" + mes + "-" + "25", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_26();
        linha.set(ano + "-" + mes + "-" + "26", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_27();
        linha.set(ano + "-" + mes + "-" + "27", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_28();
        linha.set(ano + "-" + mes + "-" + "28", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_29();
        linha.set(ano + "-" + mes + "-" + "29", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_30();
        linha.set(ano + "-" + mes + "-" + "30", valorAcumulado);
        valorAcumulado = valorAcumulado + graficoLinha.getDIA_31();
        linha.set(ano + "-" + mes + "-" + "31", valorAcumulado);
        return linha;
        }

        private void verificarSeVigenciaSelecionada() {
                if (VerificadorUtil.isListaNulaOuVazia(getAnosSelecionados())) {
                        throw new NegocioException("NECESSÁRIO SELECIONAR O ANO");
                }
        }
       
}