Subversion Repositories Integrator Subversion

Rev

Rev 587 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 587 Rev 588
Line 2... Line 2...
2
2
3
import java.util.ArrayList;
3
import java.util.ArrayList;
-
 
4
import java.util.Arrays;
-
 
5
import java.util.Date;
4
import java.util.List;
6
import java.util.List;
5
7
6
import org.springframework.stereotype.Service;
8
import org.springframework.stereotype.Service;
7
9
8
import br.com.ec.core.generic.AbstractService;
10
import br.com.ec.core.generic.AbstractService;
9
import br.com.ec.core.generic.GenericRepository;
11
import br.com.ec.core.generic.GenericRepository;
10
import br.com.ec.core.util.DataUtils;
12
import br.com.ec.core.util.DataUtils;
11
import br.com.ec.core.util.VerificadorUtil;
13
import br.com.ec.core.util.VerificadorUtil;
12
import br.com.ec.core.validador.Validador;
14
import br.com.ec.core.validador.Validador;
-
 
15
import br.com.ec.domain.dto.AlertasComprasDTO;
13
import br.com.ec.domain.dto.AlertasComprasGeralDTO;
16
import br.com.ec.domain.dto.AlertasComprasGeralDTO;
14
import br.com.ec.domain.dto.AlertasComprasGeralSubTipoDTO;
17
import br.com.ec.domain.dto.AlertasComprasGeralSubTipoDTO;
15
import br.com.ec.domain.dto.AlertasGeralDTO;
18
import br.com.ec.domain.dto.AlertasGeralDTO;
-
 
19
import br.com.ec.domain.dto.AlertasLogisticaComprasDTO;
-
 
20
import br.com.ec.domain.dto.RankingComprasTransferenciasDTO;
16
import br.com.ec.domain.dto.RankingModeloDTO;
21
import br.com.ec.domain.dto.RankingModeloDTO;
17
import br.com.ec.domain.dto.RankingProdutoDTO;
22
import br.com.ec.domain.dto.RankingProdutoDTO;
18
import br.com.ec.domain.dto.consulta.ParametrosConsultaModelosMaisVendidosDTO;
23
import br.com.ec.domain.dto.consulta.ParametrosConsultaModelosMaisVendidosDTO;
19
import br.com.ec.domain.dto.consulta.ParametrosConsultaProdutosVendidosDTO;
24
import br.com.ec.domain.dto.consulta.ParametrosConsultaProdutosVendidosDTO;
20
import br.com.ec.domain.model.SubtipoProduto;
25
import br.com.ec.domain.model.SubtipoProduto;
21
import br.com.ec.domain.model.tipos.TipoOrdenacaoMaisVendidos;
26
import br.com.ec.domain.model.tipos.TipoOrdenacaoMaisVendidos;
22
import br.com.ec.domain.model.tipos.TipoProduto;
27
import br.com.ec.domain.model.tipos.TipoProduto;
23
import br.com.ec.domain.model.tipos.TipoStatusPedidoCompra;
28
import br.com.ec.domain.model.tipos.TipoStatusPedidoCompra;
24
import br.com.ec.domain.service.AlertasService;
29
import br.com.ec.domain.service.AlertasService;
25
import br.com.ec.domain.service.LojaService;
-
 
26
import br.com.ec.domain.service.ModeloService;
30
import br.com.ec.domain.service.ModeloService;
27
import br.com.ec.domain.service.SubtipoProdutoService;
31
import br.com.ec.domain.service.SubtipoProdutoService;
28
import br.com.ec.domain.service.VendaService;
32
import br.com.ec.domain.service.VendaService;
29
33
30
@Service
34
@Service
31
public class AlertasServiceImpl extends AbstractService<AlertasGeralDTO> implements AlertasService {
35
public class AlertasServiceImpl extends AbstractService<AlertasGeralDTO> implements AlertasService {
32
36
33
        private LojaService lojaService;
-
 
34
        private ModeloService modeloService;
37
        private ModeloService modeloService;
35
       
38
       
36
        private SubtipoProdutoService subtipoProdutoService;
39
        private SubtipoProdutoService subtipoProdutoService;
37
        private VendaService vendaService;
40
        private VendaService vendaService;
38
       
41
       
39
        public AlertasServiceImpl(Validador validador, LojaService lojaService, ModeloService modeloService, SubtipoProdutoService subtipoProdutoService,
-
 
-
 
42
        public AlertasServiceImpl(Validador validador, ModeloService modeloService, SubtipoProdutoService subtipoProdutoService,
40
                        VendaService vendaService) {
43
                        VendaService vendaService) {
41
                super(validador);
44
                super(validador);
42
                this.lojaService = lojaService;
-
 
43
                this.modeloService = modeloService;
45
                this.modeloService = modeloService;
44
                this.subtipoProdutoService = subtipoProdutoService;
46
                this.subtipoProdutoService = subtipoProdutoService;
45
                this.vendaService = vendaService;
47
                this.vendaService = vendaService;
46
        }
48
        }
47
49
Line 49... Line 51...
49
        protected GenericRepository<AlertasGeralDTO> getRepository() {
51
        protected GenericRepository<AlertasGeralDTO> getRepository() {
50
                return null;
52
                return null;
51
        }
53
        }
52
       
54
       
53
        @Override
55
        @Override
54
        public AlertasGeralDTO consultarAlertasComprasGeral(AlertasGeralDTO alertasGeralDTO) {
-
 
-
 
56
        public AlertasComprasDTO consultarAlertasComprasGeral(AlertasGeralDTO alertasGeralDTO) {
-
 
57
                AlertasComprasDTO alertasComprasDTO = new AlertasComprasDTO();
-
 
58
               
-
 
59
                // LISTA DE TODOS OS TIPOS, EXCETO CAPAS
-
 
60
                List<TipoProduto> tiposProduto = new ArrayList<TipoProduto>();
-
 
61
                tiposProduto.addAll(Arrays.asList(TipoProduto.values()));
-
 
62
                for (TipoProduto tipoProduto : tiposProduto) {
-
 
63
                        if (!tipoProduto.getValor().equals(TipoProduto.CAPA.getValor())) {
-
 
64
                                alertasGeralDTO.getTiposProdutoSelecionados().add(tipoProduto);
-
 
65
                        }
-
 
66
                }
-
 
67
               
55
                // ADICIONAR PRODUTOS ESSENCIAIS DOS 30 MODELOS MAIS VENDIDOS
68
                // ADICIONAR PRODUTOS ESSENCIAIS DOS 30 MODELOS MAIS VENDIDOS
56
                // TIPO: CAPA, ESTILO: TPU, COR: TRANSPARENTE
69
                // TIPO: CAPA, ESTILO: TPU, COR: TRANSPARENTE
57
                // TIPO: PELÍCULA, SUBTIPO: VIDRO
70
                // TIPO: PELÍCULA, SUBTIPO: VIDRO
58
                // TIPO: PELÍCULA, SUBTIPO: SOFT NORMAL
71
                // TIPO: PELÍCULA, SUBTIPO: SOFT NORMAL
59
               
72
               
Line 95... Line 108...
95
                                        if (VerificadorUtil.estaNulo(rankingProdutoDTO.getProduto().getSubtipoProduto())) {
108
                                        if (VerificadorUtil.estaNulo(rankingProdutoDTO.getProduto().getSubtipoProduto())) {
96
                                                quantidadeAlertasPossiveisSemSubtipo++;
109
                                                quantidadeAlertasPossiveisSemSubtipo++;
97
                                                // ALERTA PARA CADA PRODUTO COM MENOS DE DIAS PRE-DEFINIDO
110
                                                // ALERTA PARA CADA PRODUTO COM MENOS DE DIAS PRE-DEFINIDO
98
                                                if (rankingProdutoDTO.getTempoEstoque() <= alertasGeralDTO.getTempoDeEstoqueParaAlerta()) {
111
                                                if (rankingProdutoDTO.getTempoEstoque() <= alertasGeralDTO.getTempoDeEstoqueParaAlerta()) {
99
                                                        alertasComprasGeralDTO.getAlertasProdutosSemSubtipo().add(rankingProdutoDTO);
112
                                                        alertasComprasGeralDTO.getAlertasProdutosSemSubtipo().add(rankingProdutoDTO);
-
 
113
                                                        if (VerificadorUtil.estaNulo(rankingProdutoDTO.getStatusPedidoCompra())) {
-
 
114
                                                                alertasComprasGeralDTO.adicionarQuantidadeAlertasSemPedidoCompra();
-
 
115
                                                        }
100
                                                }
116
                                                }
101
                                                if (rankingProdutoDTO.getTempoEstoque() <= alertasGeralDTO.getTempoDeEstoqueParaAlerta()/2) {
117
                                                if (rankingProdutoDTO.getTempoEstoque() <= alertasGeralDTO.getTempoDeEstoqueParaAlerta()/2) {
102
                                                        alertasComprasGeralDTO.adicionarQuantidadeAlertasCriticos();
118
                                                        alertasComprasGeralDTO.adicionarQuantidadeAlertasCriticos();
103
                                                }
119
                                                }
104
                                        } else {
120
                                        } else {
Line 121... Line 137...
121
                                                subtipoProduto.equals(rankingProdutoDTOComSubtipo.getProduto().getSubtipoProduto())) ||
137
                                                subtipoProduto.equals(rankingProdutoDTOComSubtipo.getProduto().getSubtipoProduto())) ||
122
                                                (tipoProdutoSelecionado.getValor().equals(TipoProduto.PELICULA.getValor()) &&
138
                                                (tipoProdutoSelecionado.getValor().equals(TipoProduto.PELICULA.getValor()) &&
123
                                                subtipoProduto.equals(rankingProdutoDTOComSubtipo.getProduto().getSubtipoProduto()) &&
139
                                                subtipoProduto.equals(rankingProdutoDTOComSubtipo.getProduto().getSubtipoProduto()) &&
124
                                                rankingProdutoDTOComSubtipo.getTempoEstoque() <= alertasGeralDTO.getTempoDeEstoqueParaAlerta())) {
140
                                                rankingProdutoDTOComSubtipo.getTempoEstoque() <= alertasGeralDTO.getTempoDeEstoqueParaAlerta())) {
125
                                                alertasComprasGeralSubTipoDTO.getRankingProdutosDTO().add(rankingProdutoDTOComSubtipo);
141
                                                alertasComprasGeralSubTipoDTO.getRankingProdutosDTO().add(rankingProdutoDTOComSubtipo);
-
 
142
                                                if (VerificadorUtil.estaNulo(rankingProdutoDTOComSubtipo.getStatusPedidoCompra())) {
-
 
143
                                                        alertasComprasGeralDTO.adicionarQuantidadeAlertasSemPedidoCompra();
-
 
144
                                                }
126
                                        }
145
                                        }
127
                                }
146
                                }
128
                                if (!alertasComprasGeralSubTipoDTO.getRankingProdutosDTO().isEmpty() &&
147
                                if (!alertasComprasGeralSubTipoDTO.getRankingProdutosDTO().isEmpty() &&
129
                                        (tipoProdutoSelecionado.getValor().equals(TipoProduto.PELICULA.getValor()) ||
148
                                        (tipoProdutoSelecionado.getValor().equals(TipoProduto.PELICULA.getValor()) ||
130
                                        alertasComprasGeralSubTipoDTO.getQuantidadeTotalTempoEstoque() <= alertasGeralDTO.getTempoDeEstoqueParaAlerta())) {
149
                                        alertasComprasGeralSubTipoDTO.getQuantidadeTotalTempoEstoque() <= alertasGeralDTO.getTempoDeEstoqueParaAlerta())) {
Line 134... Line 153...
134
                                        }
153
                                        }
135
                                }
154
                                }
136
                        }
155
                        }
137
                        alertasComprasGeralDTO.setQuantidadeAlertasPossiveis(quantidadeAlertasPossiveisSemSubtipo);
156
                        alertasComprasGeralDTO.setQuantidadeAlertasPossiveis(quantidadeAlertasPossiveisSemSubtipo);
138
                        alertasComprasGeralDTO.setQuantidadeAlertasPossiveisComSubtipo(quantidadeAlertasPossiveisComSubtipo);
157
                        alertasComprasGeralDTO.setQuantidadeAlertasPossiveisComSubtipo(quantidadeAlertasPossiveisComSubtipo);
139
                        alertasGeralDTO.getAlertasComprasGeralDTO().add(alertasComprasGeralDTO);
-
 
-
 
158
                       
-
 
159
                        alertasComprasDTO.getAlertasComprasGeralDTO().add(alertasComprasGeralDTO);
140
                }
160
                }
141
               
161
               
142
                // CONSULTAR ITENS SEM SUBTIPO: TOTAL DE VENDAS (90 DIAS), TOTAL DE ESTOQUE, TEMPO DE ESTOQUE E QNT PARA COMPRAR (90 DIAS)
162
                // CONSULTAR ITENS SEM SUBTIPO: TOTAL DE VENDAS (90 DIAS), TOTAL DE ESTOQUE, TEMPO DE ESTOQUE E QNT PARA COMPRAR (90 DIAS)
143
                /*
163
                /*
144
                List<SubtipoProduto> subtiposProduto = new ArrayList<SubtipoProduto>();
164
                List<SubtipoProduto> subtiposProduto = new ArrayList<SubtipoProduto>();
Line 146... Line 166...
146
                        if (!tipoProduto.getValor().equals(TipoProduto.CAPA.getValor())) {
166
                        if (!tipoProduto.getValor().equals(TipoProduto.CAPA.getValor())) {
147
                                subtiposProduto.addAll(subtipoProdutoService.consultarPorTipo(tipoProduto.getValor()));
167
                                subtiposProduto.addAll(subtipoProdutoService.consultarPorTipo(tipoProduto.getValor()));
148
                        }
168
                        }
149
                }
169
                }
150
                */
170
                */
151
               
-
 
152
               
171
               
153
                // LISTA DE TODOS OS SUBTIPOS DO TIPO
172
                // LISTA DE TODOS OS SUBTIPOS DO TIPO
154
                // CONSULTAR ITENS DO SUBTIPO: TOTAL DE VENDAS (90 DIAS), TOTAL DE ESTOQUE, TEMPO DE ESTOQUE E QNT PARA COMPRAR (90 DIAS)
173
                // CONSULTAR ITENS DO SUBTIPO: TOTAL DE VENDAS (90 DIAS), TOTAL DE ESTOQUE, TEMPO DE ESTOQUE E QNT PARA COMPRAR (90 DIAS)
155
                // ALERTA PARA CADA SUBTIPO COM MENOS DE 15 DIAS DE ESTOQUE
174
                // ALERTA PARA CADA SUBTIPO COM MENOS DE 15 DIAS DE ESTOQUE
156
               
175
               
157
                // PERMITIR DETALHAR A LISTA DOS ITENS DO SUBTIPO
176
                // PERMITIR DETALHAR A LISTA DOS ITENS DO SUBTIPO
-
 
177
                return alertasComprasDTO;
-
 
178
        }
-
 
179
       
-
 
180
        @Override
-
 
181
        public AlertasLogisticaComprasDTO consultarAlertasLogistica(Integer quantidadeDiasVendas, Integer quantidadeDiasParaAlerta, Boolean adicionarModelosFavoritosSemVendas) {
-
 
182
                // CONSULTAR MODELOS MAIS VENDIDOS
-
 
183
                List<RankingModeloDTO> modelosMaisVendidos = consultarModelosMaisVendidos(DataUtils.getDataAtual(),
-
 
184
                                DataUtils.acrescentarDias(DataUtils.getDataAtual(), quantidadeDiasVendas*-1),
-
 
185
                                adicionarModelosFavoritosSemVendas);
158
               
186
               
159
                return alertasGeralDTO;
-
 
-
 
187
                List<RankingComprasTransferenciasDTO> rankingComprasTransferencias = new ArrayList<RankingComprasTransferenciasDTO>();
-
 
188
                rankingComprasTransferencias.addAll(vendaService.consultarRankingComprasTransferencias(quantidadeDiasVendas, quantidadeDiasParaAlerta, modelosMaisVendidos, true));
-
 
189
               
-
 
190
                AlertasLogisticaComprasDTO alertasLogisticaComprasDTO = new AlertasLogisticaComprasDTO();
-
 
191
                alertasLogisticaComprasDTO.setQuantidadeAlertasModelosPossiveis(modelosMaisVendidos.size());
-
 
192
                alertasLogisticaComprasDTO.setRankingsComprasTransferenciasDTO(rankingComprasTransferencias);
-
 
193
                return alertasLogisticaComprasDTO;
160
        }
194
        }
161
       
195
       
162
        private List<RankingModeloDTO> consultarModelosMaisVendidos(AlertasGeralDTO alertasGeralDTO) {
-
 
-
 
196
        private List<RankingModeloDTO> consultarModelosMaisVendidos(Date dataInicial, Date dataFinal, Boolean adicionarModelosFavoritosSemVendas) {
163
                List<RankingModeloDTO> modelosMaisVendidos = new ArrayList<RankingModeloDTO>();
197
                List<RankingModeloDTO> modelosMaisVendidos = new ArrayList<RankingModeloDTO>();
164
                ParametrosConsultaModelosMaisVendidosDTO parametrosConsulta = new ParametrosConsultaModelosMaisVendidosDTO();
198
                ParametrosConsultaModelosMaisVendidosDTO parametrosConsulta = new ParametrosConsultaModelosMaisVendidosDTO();
165
                parametrosConsulta.setDataFinal(DataUtils.getDataAtual());
-
 
166
                parametrosConsulta.setDataInicial(DataUtils.acrescentarDias(DataUtils.getDataAtual(), alertasGeralDTO.getQuantidadeDiasVendas()*-1));
-
 
167
                modelosMaisVendidos.addAll(vendaService.consultarRankingModelos(parametrosConsulta, alertasGeralDTO.getAdicionarModelosFavoritosSemVendas()));
-
 
-
 
199
                parametrosConsulta.setDataFinal(dataInicial);
-
 
200
                parametrosConsulta.setDataInicial(dataFinal);
-
 
201
                modelosMaisVendidos.addAll(vendaService.consultarRankingModelos(parametrosConsulta, adicionarModelosFavoritosSemVendas));
168
                return modelosMaisVendidos;
202
                return modelosMaisVendidos;
169
        }
203
        }
170
       
204
       
171
}
205
}