Subversion Repositories Integrator Subversion

Rev

Rev 583 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

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.VerificadorUtil;
import br.com.ec.core.validador.Validador;
import br.com.ec.domain.dto.AlertasGeralDTO;
import br.com.ec.domain.dto.RankingModeloDTO;
import br.com.ec.domain.dto.RankingProdutoDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaModelosMaisVendidosDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaProdutosVendidosDTO;
import br.com.ec.domain.model.SubtipoProduto;
import br.com.ec.domain.model.tipos.TipoProduto;
import br.com.ec.domain.service.AlertasService;
import br.com.ec.domain.service.LojaService;
import br.com.ec.domain.service.ModeloService;
import br.com.ec.domain.service.SubtipoProdutoService;
import br.com.ec.domain.service.VendaService;

@Service
public class AlertasServiceImpl extends AbstractService<AlertasGeralDTO> implements AlertasService {

        private LojaService lojaService;
        private ModeloService modeloService;
       
        private SubtipoProdutoService subtipoProdutoService;
        private VendaService vendaService;
       
        public AlertasServiceImpl(Validador validador, LojaService lojaService, ModeloService modeloService, SubtipoProdutoService subtipoProdutoService,
                        VendaService vendaService) {
                super(validador);
                this.lojaService = lojaService;
                this.modeloService = modeloService;
                this.subtipoProdutoService = subtipoProdutoService;
                this.vendaService = vendaService;
        }

        @Override
        protected GenericRepository<AlertasGeralDTO> getRepository() {
                return null;
        }
       
        @Override
        public AlertasGeralDTO consultarAlertasComprasGeral(AlertasGeralDTO alertasGeralDTO) {
                // CONSULTAR TODOS OS PRODUTOS VENDIDOS NOS ULTIMOS 90 DIAS
                List<RankingProdutoDTO> rankingProdutosDTO = new ArrayList<RankingProdutoDTO>();
               
                ParametrosConsultaProdutosVendidosDTO parametrosConsulta = new ParametrosConsultaProdutosVendidosDTO();
                parametrosConsulta.setDataFinal(DataUtils.getDataAtual());
                parametrosConsulta.setDataInicial(DataUtils.acrescentarDias(DataUtils.getDataAtual(), alertasGeralDTO.getQuantidadeDiasVendas()*-1));
               
                for (TipoProduto tipoProdutoSelecionado : alertasGeralDTO.getTiposProdutoSelecionados()) {
                        parametrosConsulta.setTipoProduto(tipoProdutoSelecionado.getValor());
                        rankingProdutosDTO.addAll(vendaService.consultarProdutosVendidos(parametrosConsulta));
                }
               
                for (RankingProdutoDTO rankingProdutoDTO : rankingProdutosDTO) {
                        System.out.print(rankingProdutoDTO.getProduto().getCodigo() + " : " + rankingProdutoDTO.getProduto().getDescricaoCompleta() + " :: ");
                        if (VerificadorUtil.naoEstaNulo(rankingProdutoDTO.getProduto().getSubtipoProduto())) {
                                System.out.print(rankingProdutoDTO.getProduto().getSubtipoProduto().getDescricao());
                        } else {
                                System.out.print("NÃO TEM SUBTIPO");
                        }
                        System.out.println(" - VENDAS: " + rankingProdutoDTO.getQuantidadeVendas() + ", ESTOQUE: " + rankingProdutoDTO.getQuantidadeEstoque());
                }
               
                // VERIFICAR ITENS POR TIPO, SEM SUBTIPO
               
               
                // CONSULTAR ITENS SEM SUBTIPO: TOTAL DE VENDAS (90 DIAS), TOTAL DE ESTOQUE, TEMPO DE ESTOQUE E QNT PARA COMPRAR (90 DIAS)
                /*
                List<SubtipoProduto> subtiposProduto = new ArrayList<SubtipoProduto>();
                for (TipoProduto tipoProduto : tiposProduto) {
                        if (!tipoProduto.getValor().equals(TipoProduto.CAPA.getValor())) {
                                subtiposProduto.addAll(subtipoProdutoService.consultarPorTipo(tipoProduto.getValor()));
                        }
                }
                */

                // ALERTA PARA CADA PRODUTO COM MENOS DE 15 DIAS
               
                // LISTA DE TODOS OS SUBTIPOS DO TIPO
                // CONSULTAR ITENS DO SUBTIPO: TOTAL DE VENDAS (90 DIAS), TOTAL DE ESTOQUE, TEMPO DE ESTOQUE E QNT PARA COMPRAR (90 DIAS)
                // ALERTA PARA CADA SUBTIPO COM MENOS DE 15 DIAS DE ESTOQUE
               
                // PERMITIR DETALHAR A LISTA DOS ITENS DO SUBTIPO
               
                return alertasGeralDTO;
        }
       
        private List<RankingModeloDTO> consultarModelosMaisVendidos(AlertasGeralDTO alertasGeralDTO) {
                List<RankingModeloDTO> modelosMaisVendidos = new ArrayList<RankingModeloDTO>();
                ParametrosConsultaModelosMaisVendidosDTO parametrosConsulta = new ParametrosConsultaModelosMaisVendidosDTO();
                parametrosConsulta.setDataFinal(DataUtils.getDataAtual());
                parametrosConsulta.setDataInicial(DataUtils.acrescentarDias(DataUtils.getDataAtual(), alertasGeralDTO.getQuantidadeDiasVendas()*-1));
                modelosMaisVendidos.addAll(vendaService.consultarRankingModelos(parametrosConsulta, alertasGeralDTO.getAdicionarModelosFavoritosSemVendas()));
                return modelosMaisVendidos;
        }
       
}