Subversion Repositories Integrator Subversion

Rev

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

package br.com.ec.domain.service.impl;

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.validador.Validador;
import br.com.ec.domain.dto.TempoRealDTO;
import br.com.ec.domain.service.DashboardService;
import br.com.ec.repository.DashboardRepository;

@Service
public class DashboardServiceImpl extends AbstractService<TempoRealDTO> implements DashboardService {
       
        private DashboardRepository dashboardRepository;

        @Autowired
        public DashboardServiceImpl(Validador validador, DashboardRepository dashboardRepository) {
                super(validador);
                this.dashboardRepository = dashboardRepository;
        }

        @Override
        protected GenericRepository<TempoRealDTO> getRepository() {
                return dashboardRepository;
        }
       
        @Override
        public TempoRealDTO consultarDashboardDoDia() {
                // TODO Auto-generated method stub
                return null;
        }
       
}

/*
@Override
public AcompanhamentoDTO consultarConsolidacaoDoDia() {
        AcompanhamentoDTO consolidado = new AcompanhamentoDTO();
        List<ConsolidadoVendasLojaDTO> listaLojaDoDiaDTO = new ArrayList<ConsolidadoVendasLojaDTO>();
        List<Loja> lojas = lojaService.listarLojasAtivas();
       
        for (Loja loja : lojas) {
                ConsolidadoVendasLojaDTO consolidadoVendasLoja = new ConsolidadoVendasLojaDTO();
                consolidadoVendasLoja.setLoja(loja);
                Venda venda = new Venda(loja, null);
                Integer quantidadeVendas = vendaService.obterQuantidadeDeVendasPorLojaEePeriodo(venda, DataUtils.getDataAtual(), DataUtils.getDataAtual());
                consolidado.adicionarQuantidadeVendas(quantidadeVendas);
                consolidadoVendasLoja.setQuantidadeTotalVendas(quantidadeVendas);
               
                Double valorVendas = vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodo(loja, DataUtils.getDataAtual(), DataUtils.getDataAtual());
                ParametrosConsultaVendasDTO parametrosConsultaVendas = new ParametrosConsultaVendasDTO();
                parametrosConsultaVendas.setLoja(loja);
                parametrosConsultaVendas.setDataInicial(DataUtils.getDataAtual());
                parametrosConsultaVendas.setDataFinal(DataUtils.getDataAtual());
                valorVendas = valorVendas - vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodoServicos(parametrosConsultaVendas);
                consolidado.adicionarValorVendas(valorVendas);
                consolidadoVendasLoja.setValorTotalVendas(valorVendas);
               
                parametrosConsultaVendas.setDataInicial(DataUtils.getDataComHorarioMinimo(DataUtils.getPrimeiroDiaDoMesAtual()));
        parametrosConsultaVendas.setDataFinal(DataUtils.getDataComHorarioMaximo(DataUtils.acrescentarDias(DataUtils.getDataAtual(), -1)));
                Double totalVendasAnterioresDoMesAtual = vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodo(parametrosConsultaVendas);
                totalVendasAnterioresDoMesAtual = totalVendasAnterioresDoMesAtual - vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodoServicos(parametrosConsultaVendas);
                consolidadoVendasLoja.setValorTotalVendasAnterioresDoMesAtual(totalVendasAnterioresDoMesAtual);
               
                Double valorMetaMensalLoja = consultarMetaMensal(loja);
                consolidadoVendasLoja.setValorMetaMensal(valorMetaMensalLoja);
                consolidado.adicionarValorMeta(valorMetaMensalLoja);
               
                consolidadoVendasLoja.setIndicadorLojaAberta(aberturaLojaService.consultarAberturaLoja(DataUtils.getDataAtual(), loja) != null);
                venda.setTipoSituacao(TipoSituacaoVenda.NOVO.getValor());
                consolidadoVendasLoja.setIndicadorVendasNovas(vendaService.obterQuantidadeDeVendasPorLojaEePeriodo(venda, DataUtils.getDataAtual(), DataUtils.getDataAtual()) > 0);
               
                listaLojaDoDiaDTO.add(consolidadoVendasLoja);
        }
       
        ConsolidadoVendasLojaDTO consolidadoVendasLojaAssistencia = new ConsolidadoVendasLojaDTO();
        Loja lojaAssistencia = new Loja();
        lojaAssistencia.setDescricao("ASSISTÊNCIA");
        consolidadoVendasLojaAssistencia.setLoja(lojaAssistencia);
        ParametrosConsultaVendasDTO parametrosConsultaVendas = new ParametrosConsultaVendasDTO();
        parametrosConsultaVendas.setDataInicial(DataUtils.getDataAtual());
        parametrosConsultaVendas.setDataFinal(DataUtils.getDataAtual());
        consolidadoVendasLojaAssistencia.setValorTotalVendas(vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodoServicos(parametrosConsultaVendas));
        consolidadoVendasLojaAssistencia.setIndicadorLojaAberta(true);
        listaLojaDoDiaDTO.add(consolidadoVendasLojaAssistencia);
       
        consolidado.setListaLojaDoDiaDTO(new ArrayList<ConsolidadoVendasLojaDTO>(ordenador.ordenar(listaLojaDoDiaDTO)));
        consolidado.setValorTotalVendasMes(vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodo(null, DataUtils.getPrimeiroDiaDoMesAtual(), DataUtils.getUltimoDiaDoMesAtual()));
        consolidado.setQuantidadeTotalPagamentos(pagamentoService.quantidadePagamentosEmAberto(null));
        consolidado.setQuantidadeTotalPendencias(pendenciaService.quantidadePendenciasNaoFinalizadas(null));
       
        Date diaDoMesPassado = DataUtils.acrescentarMeses(DataUtils.getDataAtual(), -1);
        consolidado.setValorTotalVendasDoDiaMesPassado(vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodo(null, diaDoMesPassado, diaDoMesPassado));
        consolidado.setValorTotalVendasMesPassado(vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodo(null, DataUtils.getPrimeiroDiaDoMesAnterior(), diaDoMesPassado));
       
        return consolidado;
}

@Override
public ConsolidadoGestaoDTO consultarConsolidadoGestaoDTO() {
        ConsolidadoGestaoDTO consolidado = new ConsolidadoGestaoDTO();
        consolidado.setQuantidadeTotalVendas(vendaService.obterQuantidadeDeVendasPorLojaEePeriodo(null, DataUtils.getDataAtual(), DataUtils.getDataAtual()));
        consolidado.setValorTotalVendasMes(vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodo(null, DataUtils.getPrimeiroDiaDoMesAtual(), DataUtils.getUltimoDiaDoMesAtual()));
        consolidado.setQuantidadeTotalEstoque(produtoService.quantidadeTotalEstoque(null));
        consolidado.setValorTotalEstoque(produtoService.valorTotalEstoque(null, null));
        return consolidado;
}

@Override
public LineChartModel consultarGrafico(Date primeiroMes, Date segundoMes) {
        LineChartModel graficoAcumulado = new LineChartModel();
        String mesAtual = "" + (DataUtils.obterCalendario(primeiroMes).get(Calendar.MONTH)+1);
        String anoAtual = "" + DataUtils.obterCalendario(primeiroMes).get(Calendar.YEAR);
        String anoAnterior = "" + DataUtils.obterCalendario(segundoMes).get(Calendar.YEAR);
        String mesAnterior = "" + (DataUtils.obterCalendario(segundoMes).get(Calendar.MONTH)+1);
        if (mesAnterior.equals("0")) {
                mesAnterior = "12";
                anoAnterior = "" + (DataUtils.obterCalendario(DataUtils.getDataAtual()).get(Calendar.YEAR)-1);
        }
        if (mesAtual.length()==1) {
                mesAtual = "0" + mesAtual;
        }
        if (mesAnterior.length()==1) {
                mesAnterior = "0" + mesAnterior;
        }
       
        GraficoAcumuladoDTO graficoAtual = vendaService.consultarGrafico(mesAtual, anoAtual);
        LineChartSeries series1 = preencherLinhaAcumulando(graficoAtual, mesAtual, anoAtual);
    series1.setLabel("ATUAL");
   
    GraficoAcumuladoDTO graficoAnterior = vendaService.consultarGrafico(mesAnterior, anoAnterior);
    LineChartSeries series2 = preencherLinhaAcumulando(graficoAnterior, mesAtual, anoAtual);
    series2.setLabel("ANTERIOR");

    graficoAcumulado.addSeries(series1);
    graficoAcumulado.addSeries(series2);
     
    graficoAcumulado.setTitle("");
    graficoAcumulado.setZoom(true);
    graficoAcumulado.setShowPointLabels(true);
    graficoAcumulado.getAxis(AxisType.Y).setLabel("VALORES R$");
    DateAxis axis = new DateAxis("DATAS");
    axis.setTickAngle(-50);
    axis.setMin(anoAtual + "-" + mesAtual + "-" + "01");
    axis.setMax(anoAtual + "-" + mesAtual + "-" + "31");
    axis.setTickFormat("%b %#d, 20%y");
    graficoAcumulado.getAxes().put(AxisType.X, axis);
    return graficoAcumulado;
}

private LineChartSeries preencherLinhaAcumulando(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;
}

@Override
public ProvisaoCaixaDTO consultarGraficoCaixa(Date dataInicial, Date dataFinal) {
        LineChartModel graficoAcumulado = new LineChartModel();
        String mes = "" + (DataUtils.obterCalendario(dataInicial).get(Calendar.MONTH)+1);
        String ano = "" + DataUtils.obterCalendario(dataInicial).get(Calendar.YEAR);
        if (mes.length()==1) {
                mes = "0" + mes;
        }
       
        Double caixa = contaBancariaService.consultarSaldo(null);
        List<DetalhamentoCaixaDTO> graficoAtual = fluxoDeCaixaService.consultarGraficoCaixa(caixa, dataInicial, dataFinal);
        LineChartSeries series1 = preencherLinha(graficoAtual, mes, ano);
    series1.setLabel("ATUAL");
   
    graficoAcumulado.addSeries(series1);
     
    graficoAcumulado.setTitle("");
    graficoAcumulado.setZoom(true);
    graficoAcumulado.setShowPointLabels(true);
    graficoAcumulado.getAxis(AxisType.Y).setLabel("VALORES R$");
    DateAxis axis = new DateAxis("DATAS");
    axis.setTickAngle(-50);
    axis.setMin(DataUtils.converterDataParaStringNoFormato(dataInicial, "yyyy - MM - dd"));
    axis.setMax(DataUtils.converterDataParaStringNoFormato(dataFinal, "yyyy - MM - dd"));
//    axis.setMin(ano + "-" + mes + "-" + "01");
//    axis.setMax(ano + "-" + mes + "-" + graficoAtual.size());
    axis.setTickFormat("%b %#d");
    graficoAcumulado.getAxes().put(AxisType.X, axis);
   
    ProvisaoCaixaDTO provisao = new ProvisaoCaixaDTO();
    provisao.setGrafico(graficoAcumulado);
    provisao.setDetalhamentos(graficoAtual);
    return provisao;
}

private LineChartSeries preencherLinha(List<DetalhamentoCaixaDTO> detalhamentos, String mes, String ano) {
        LineChartSeries linha = new LineChartSeries();
//      Integer indice = 1;
//      String dia = "";
        for (DetalhamentoCaixaDTO detalhamento : detalhamentos) {
//              if (indice < 10) {
//                      dia = "0" + indice;
//              } else {
//                      dia = "" + indice;
//              }
//              indice++;
//              linha.set(ano + "-" + mes + "-" + dia, detalhamento.getSaldo());
                linha.set(detalhamento.dataFormatada(), detalhamento.getSaldo());
        }
    return linha;
}

@Override
public FluxoDeCaixaDTO consultarFluxoDeCaixa(FluxoDeCaixaDTO fluxoDeCaixa) {
        return fluxoDeCaixaService.consultarFluxoDeCaixa(fluxoDeCaixa);
}

@Override
public List<FluxoDeCaixaCategoriaDTO> consultarFluxoDeCaixaPorCategoria(FluxoDeCaixaDTO fluxoDeCaixa, String tipoCategoria) {
        return fluxoDeCaixaService.consultarFluxoDeCaixaPorCategoria(fluxoDeCaixa, tipoCategoria);
}

@Override
public ReceitaDTO consultarReceita(ReceitaDTO receita) {
        ParametrosConsultaVendasDTO parametrosConsultaVendas = new ParametrosConsultaVendasDTO();
        parametrosConsultaVendas.setDataInicial(receita.getDataInicial());
        parametrosConsultaVendas.setDataFinal(receita.getDataFinal());
        parametrosConsultaVendas.setLoja(receita.getLoja());
        parametrosConsultaVendas.setVendedor(receita.getVendedor());
        parametrosConsultaVendas.setIndicacao(receita.getIndicacao());
       
        receita.setValorTotalBruto(vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodo(parametrosConsultaVendas));
        receita.setValorTotalLiquido(vendaService.obterValorTotalLiquidoDeVendasPorLojaEePeriodo(parametrosConsultaVendas));
        receita.setValorTotalBrutoPorFormasDePagamento(vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodoEeFormasDePagamento(parametrosConsultaVendas, verificarSelecoesFormasPagamento(receita)));
        receita.setQuantidadeTotalEstoque(produtoService.quantidadeTotalEstoque(receita.getLoja()));
        receita.setValorTotalEstoque(produtoService.valorTotalEstoque(receita.getLoja(), null));
        receita.setQuantidadeProdutosVendidos(vendaService.obterQuantidadeProdutosVendidosPorLojaEePeriodoNaoVivo(parametrosConsultaVendas));
        receita.setValorProdutosUtilizados(vendaService.obterValorProdutosUtilizadosEmVendasPorLojaEePeriodo(parametrosConsultaVendas));
        receita.setProcessado(true);
        return receita;
}

private List<FormaPagamento> verificarSelecoesFormasPagamento(ReceitaDTO receita) {
        List<FormaPagamento> formas = new ArrayList<FormaPagamento>();
        List<FormaPagamento> formasSelecionadas = Arrays.asList(receita.getFormasDePagamento());
        if (VerificadorUtil.naoEstaNulo(receita.getFormasDePagamento())) {
                for (FormaPagamento forma : formasSelecionadas) {
                        if (VerificadorUtil.naoEstaNulo(forma)) {
                                formas.add(forma);
                        }
                }
        }
        return formas;
}

@Override
public DreDTO consultarDRE(DreDTO dre) {
        ParametrosConsultaVendasDTO parametrosConsultaVendas = new ParametrosConsultaVendasDTO();
        parametrosConsultaVendas.setDataInicial(dre.getDataInicial());
        parametrosConsultaVendas.setDataFinal(dre.getDataFinal());
        parametrosConsultaVendas.setLojas(dre.getLojasSelecionadas());
       
        List<DreItemDTO> itens = new ArrayList<DreItemDTO>();
        DreItemDTO itemDRE = new DreItemDTO("RECEITA OPERACIONAL BRUTA"); //VENDAS DE PRODUTOS, MERCADORIAS E SERVIÇOS
        Double valor = new Double(0.0);
        vendaService.obterValorTotalBrutoDeVendasPorLojaEePeriodo(parametrosConsultaVendas);
       
        itemDRE.setValor(valor);
        itens.add(itemDRE);
        dre.setItens(itens);
        return dre;
}

private Double consultarMetaMensal(Loja loja) {
        return avaliacaoLojaService.consultarValorMetaMensalLojaPelaData(loja.getSequencial(), DataUtils.getDataAtual());
}

*/