Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
582 blopes 1
package br.com.ec.domain.service.impl;
2
 
3
import java.util.ArrayList;
4
import java.util.List;
5
 
6
import org.springframework.stereotype.Service;
7
 
8
import br.com.ec.core.generic.AbstractService;
9
import br.com.ec.core.generic.GenericRepository;
10
import br.com.ec.core.util.DataUtils;
11
import br.com.ec.core.util.VerificadorUtil;
12
import br.com.ec.core.validador.Validador;
583 blopes 13
import br.com.ec.domain.dto.AlertasComprasGeralDTO;
582 blopes 14
import br.com.ec.domain.dto.AlertasGeralDTO;
15
import br.com.ec.domain.dto.RankingModeloDTO;
16
import br.com.ec.domain.dto.RankingProdutoDTO;
17
import br.com.ec.domain.dto.consulta.ParametrosConsultaModelosMaisVendidosDTO;
18
import br.com.ec.domain.dto.consulta.ParametrosConsultaProdutosVendidosDTO;
19
import br.com.ec.domain.model.SubtipoProduto;
583 blopes 20
import br.com.ec.domain.model.tipos.TipoOrdenacaoMaisVendidos;
582 blopes 21
import br.com.ec.domain.model.tipos.TipoProduto;
22
import br.com.ec.domain.service.AlertasService;
23
import br.com.ec.domain.service.LojaService;
24
import br.com.ec.domain.service.ModeloService;
25
import br.com.ec.domain.service.SubtipoProdutoService;
26
import br.com.ec.domain.service.VendaService;
27
 
28
@Service
29
public class AlertasServiceImpl extends AbstractService<AlertasGeralDTO> implements AlertasService {
30
 
31
        private LojaService lojaService;
32
        private ModeloService modeloService;
33
 
34
        private SubtipoProdutoService subtipoProdutoService;
35
        private VendaService vendaService;
36
 
37
        public AlertasServiceImpl(Validador validador, LojaService lojaService, ModeloService modeloService, SubtipoProdutoService subtipoProdutoService,
38
                        VendaService vendaService) {
39
                super(validador);
40
                this.lojaService = lojaService;
41
                this.modeloService = modeloService;
42
                this.subtipoProdutoService = subtipoProdutoService;
43
                this.vendaService = vendaService;
44
        }
45
 
46
        @Override
47
        protected GenericRepository<AlertasGeralDTO> getRepository() {
48
                return null;
49
        }
50
 
51
        @Override
52
        public AlertasGeralDTO consultarAlertasComprasGeral(AlertasGeralDTO alertasGeralDTO) {
53
                // CONSULTAR TODOS OS PRODUTOS VENDIDOS NOS ULTIMOS 90 DIAS
54
                List<RankingProdutoDTO> rankingProdutosDTO = new ArrayList<RankingProdutoDTO>();
55
 
56
                ParametrosConsultaProdutosVendidosDTO parametrosConsulta = new ParametrosConsultaProdutosVendidosDTO();
57
                parametrosConsulta.setDataFinal(DataUtils.getDataAtual());
58
                parametrosConsulta.setDataInicial(DataUtils.acrescentarDias(DataUtils.getDataAtual(), alertasGeralDTO.getQuantidadeDiasVendas()*-1));
583 blopes 59
                parametrosConsulta.setTipoOrdenacao(TipoOrdenacaoMaisVendidos.QUANTIDADE.getValor());
582 blopes 60
 
61
                for (TipoProduto tipoProdutoSelecionado : alertasGeralDTO.getTiposProdutoSelecionados()) {
62
                        parametrosConsulta.setTipoProduto(tipoProdutoSelecionado.getValor());
63
                        rankingProdutosDTO.addAll(vendaService.consultarProdutosVendidos(parametrosConsulta));
64
                }
65
 
66
                for (RankingProdutoDTO rankingProdutoDTO : rankingProdutosDTO) {
67
                        System.out.print(rankingProdutoDTO.getProduto().getCodigo() + " : " + rankingProdutoDTO.getProduto().getDescricaoCompleta() + " :: ");
68
                        if (VerificadorUtil.naoEstaNulo(rankingProdutoDTO.getProduto().getSubtipoProduto())) {
69
                                System.out.print(rankingProdutoDTO.getProduto().getSubtipoProduto().getDescricao());
70
                        } else {
71
                                System.out.print("NÃO TEM SUBTIPO");
72
                        }
73
                        System.out.println(" - VENDAS: " + rankingProdutoDTO.getQuantidadeVendas() + ", ESTOQUE: " + rankingProdutoDTO.getQuantidadeEstoque());
74
                }
75
 
583 blopes 76
                // CONSULTAR SUBTIPOS
77
 
582 blopes 78
                // VERIFICAR ITENS POR TIPO, SEM SUBTIPO
583 blopes 79
                for (TipoProduto tipoProdutoSelecionado : alertasGeralDTO.getTiposProdutoSelecionados()) {
80
                        AlertasComprasGeralDTO alertasComprasGeralDTO = new AlertasComprasGeralDTO();
81
                        alertasComprasGeralDTO.setTipoProduto(tipoProdutoSelecionado);
82
 
83
                        List<SubtipoProduto> subtiposProduto = subtipoProdutoService.consultarPorTipo(tipoProdutoSelecionado.getValor());
84
                        List<RankingProdutoDTO> rankingProdutosDTOComSubtipo = new ArrayList<RankingProdutoDTO>();
85
                        for (RankingProdutoDTO rankingProdutoDTO : rankingProdutosDTO) {
86
                                if (rankingProdutoDTO.getProduto().getTipo().equals(tipoProdutoSelecionado.getValor())) {
87
                                        if (VerificadorUtil.estaNulo(rankingProdutoDTO.getProduto().getSubtipoProduto())) {
88
                                                // ALERTA PARA CADA PRODUTO COM MENOS DE 15 DIAS
89
                                                if (rankingProdutoDTO.getTempoEstoque() <= alertasGeralDTO.getTempoDeEstoqueParaAlerta()) {
90
                                                        alertasComprasGeralDTO.getAlertasProdutosSemSubtipo().add(rankingProdutoDTO);
91
                                                }
92
                                        } else {
93
                                                rankingProdutosDTOComSubtipo.add(rankingProdutoDTO);
94
                                        }
95
                                }
96
                        }
97
 
98
                        for (SubtipoProduto subtipoProduto : subtiposProduto) {
99
                                for (RankingProdutoDTO rankingProdutoDTOComSubtipo : rankingProdutosDTOComSubtipo) {
100
                                        if (subtipoProduto.equals(rankingProdutoDTOComSubtipo.getProduto().getSubtipoProduto())) {
101
 
102
                                        }
103
                                }
104
                        }
105
 
106
                        alertasGeralDTO.getAlertasComprasGeralDTO().add(alertasComprasGeralDTO);
107
                }
582 blopes 108
 
109
                // CONSULTAR ITENS SEM SUBTIPO: TOTAL DE VENDAS (90 DIAS), TOTAL DE ESTOQUE, TEMPO DE ESTOQUE E QNT PARA COMPRAR (90 DIAS)
110
                /*
111
                List<SubtipoProduto> subtiposProduto = new ArrayList<SubtipoProduto>();
112
                for (TipoProduto tipoProduto : tiposProduto) {
113
                        if (!tipoProduto.getValor().equals(TipoProduto.CAPA.getValor())) {
114
                                subtiposProduto.addAll(subtipoProdutoService.consultarPorTipo(tipoProduto.getValor()));
115
                        }
116
                }
117
                */
118
 
583 blopes 119
 
582 blopes 120
                // LISTA DE TODOS OS SUBTIPOS DO TIPO
121
                // CONSULTAR ITENS DO SUBTIPO: TOTAL DE VENDAS (90 DIAS), TOTAL DE ESTOQUE, TEMPO DE ESTOQUE E QNT PARA COMPRAR (90 DIAS)
122
                // ALERTA PARA CADA SUBTIPO COM MENOS DE 15 DIAS DE ESTOQUE
123
 
124
                // PERMITIR DETALHAR A LISTA DOS ITENS DO SUBTIPO
125
 
126
                return alertasGeralDTO;
127
        }
128
 
129
        private List<RankingModeloDTO> consultarModelosMaisVendidos(AlertasGeralDTO alertasGeralDTO) {
130
                List<RankingModeloDTO> modelosMaisVendidos = new ArrayList<RankingModeloDTO>();
131
                ParametrosConsultaModelosMaisVendidosDTO parametrosConsulta = new ParametrosConsultaModelosMaisVendidosDTO();
132
                parametrosConsulta.setDataFinal(DataUtils.getDataAtual());
133
                parametrosConsulta.setDataInicial(DataUtils.acrescentarDias(DataUtils.getDataAtual(), alertasGeralDTO.getQuantidadeDiasVendas()*-1));
134
                modelosMaisVendidos.addAll(vendaService.consultarRankingModelos(parametrosConsulta, alertasGeralDTO.getAdicionarModelosFavoritosSemVendas()));
135
                return modelosMaisVendidos;
136
        }
137
 
138
}