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 | }
|