Subversion Repositories Integrator Subversion

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
346 espaco 1
package br.com.ec.domain.service.impl;
2
 
3
import org.springframework.beans.factory.annotation.Autowired;
4
import org.springframework.stereotype.Service;
5
 
6
import br.com.ec.core.generic.AbstractService;
7
import br.com.ec.core.generic.GenericRepository;
8
import br.com.ec.core.validador.Validador;
9
import br.com.ec.domain.dto.ExtratoEntregasDTO;
10
import br.com.ec.domain.model.Pedido;
11
import br.com.ec.domain.service.PedidoService;
12
import br.com.ec.domain.service.UsuarioService;
13
import br.com.ec.repository.PedidoRepository;
14
 
15
@Service
16
public class PedidoServiceImpl extends AbstractService<Pedido> implements PedidoService {
17
 
18
        private UsuarioService usuarioService;
19
        private PedidoRepository pedidoRepository;
20
 
21
        @Autowired
22
        public PedidoServiceImpl(Validador validador, UsuarioService usuarioService, PedidoRepository pedidoRepository) {
23
                super(validador);
24
                this.usuarioService = usuarioService;
25
                this.pedidoRepository = pedidoRepository;
26
        }
27
 
28
        @Override
29
        protected GenericRepository<Pedido> getRepository() {
30
                return pedidoRepository;
31
        }
32
 
33
        @Override
34
        public ExtratoEntregasDTO consultarExtratoEntregas(ExtratoEntregasDTO extratoEntregasDTO) {
35
                extratoEntregasDTO.setEntregasDTO(pedidoRepository.consultarEntregas(extratoEntregasDTO));
36
                return extratoEntregasDTO;
37
        }
38
 
39
        /*
40
        @Override
41
        protected void regrasNegocioAlterar(Pedido pedido) {
42
                super.regrasNegocioAlterar(pedido);
43
                verificarParametros(pedido);
44
        }
45
        */
46
        /*
47
        @Override
48
        public Pedido consultarPedidoCompleto(Pedido pedido) {
49
                return pedidoRepository.consultarPedidoCompleto(pedido);
50
        }
51
 
52
        @Override
53
        public Pedido adicionarPedido(final Pedido pedido, final String senhaUsuario) {
54
                verificarParametros(pedido);
55
                pedido.setUsuarioPedido(usuarioService.consultarUsuarioPorSenha(senhaUsuario));
56
                pedido.setDataPedido(DataUtils.getDataAtual());
57
                pedido.setDataUltimaAlteracaoSituacao(DataUtils.getDataAtual());
58
                List<PedidoProduto> produtos = pedido.getProdutos();
59
                if (produtos.isEmpty()) {
60
                        produtos = null;
61
                }
62
                pedido.setProdutos(null);
63
                cadastrar(pedido);
64
                pedido.setProdutos(produtos);
65
                alterar(pedido);
66
                return pedido;
67
        }
68
 
69
        @Override
70
        public Long cadastrarPedidoVendaPersonalizada(Venda vendaCadastrada, ParametrosVendaDTO parametrosVendaDTO) {
71
                Boolean cadastrarPedido = false;
72
                for (Lancamento lancamento : parametrosVendaDTO.getLancamentos()) {
73
                        if (VerificadorUtil.naoEstaNuloOuVazio(lancamento.getTipoPersonalizacao())) {
74
                                cadastrarPedido = true;
75
                                break;
76
                        }
77
                        if (VerificadorUtil.naoEstaNuloOuVazio(lancamento.getEstampa())) {
78
                                cadastrarPedido = true;
79
                                break;
80
                        }
81
                }
82
 
83
                if (cadastrarPedido) {
84
                        Pedido pedido = new Pedido();
85
                        pedido.setTipoPedido(TipoPedido.PERSONALIZACAO.getValor());
86
                        pedido.setTipoSituacao(TipoSituacaoPedido.NOVO.getValor());
87
                        pedido.setDataPedido(DataUtils.getDataAtual());
88
                        pedido.setLoja(vendaCadastrada.getLoja());
89
                        if (VerificadorUtil.estaNulo(vendaCadastrada.getCliente())) {
90
                                pedido.setContatoCliente(vendaCadastrada.getObservacao());
91
                        }
92
                        pedido.setCliente(vendaCadastrada.getCliente());
93
                        pedido.setObservacao(vendaCadastrada.getObservacao());
94
                        pedido.setUsuarioPedido(usuarioService.consultarUsuarioPorPessoa(vendaCadastrada.getVendedor().getPessoa()));
95
                        pedido.setVenda(vendaCadastrada);
96
                        this.cadastrar(pedido);
97
 
98
                        List<PedidoHistorico> historico = new ArrayList<PedidoHistorico>();
99
                        PedidoHistorico pedidoHistorico = new PedidoHistorico();
100
                        pedidoHistorico.setPedido(pedido);
101
                        pedidoHistorico.setDataHistorico(DataUtils.getDataAtual());
102
                        pedidoHistorico.setObservacao("VENDA: " + vendaCadastrada.getSequencial());
103
                        pedidoHistorico.setTipoSituacao(TipoSituacaoPedido.NOVO.getValor());
104
                        pedidoHistorico.setUsuario(pedido.getUsuarioPedido());
105
                        historico.add(pedidoHistorico);
106
                        pedido.setHistorico(historico);
107
 
108
                        List<PedidoProduto> pedidosProduto = new ArrayList<PedidoProduto>();
109
                        for (Lancamento lancamento : parametrosVendaDTO.getLancamentos()) {
110
                                if ((VerificadorUtil.naoEstaNuloOuVazio(lancamento.getTipoPersonalizacao())) ||
111
                                                (VerificadorUtil.naoEstaNuloOuVazio(lancamento.getEstampa()))) {
112
                                        PedidoProduto pedidoProduto = new PedidoProduto();
113
                                        pedidoProduto.setPedido(pedido);
114
                                        pedidoProduto.setProduto(lancamento.getProduto());
115
                                        pedidoProduto.setValor(lancamento.getValorVenda());
116
                                        pedidoProduto.setEstampa(lancamento.getEstampa());
117
                                        pedidoProduto.setTipoPersonalizacao(lancamento.getTipoPersonalizacao());
118
                                        pedidoProduto.setObservacao(lancamento.getObservacao());
119
                                        pedidosProduto.add(pedidoProduto);
120
                                }
121
                        }
122
                        pedido.setProdutos(pedidosProduto);
123
                        this.alterar(pedido);
124
                        return pedido.getSequencial();
125
                }
126
                return null;
127
        }
128
 
129
        private void verificarParametros(final Pedido pedido) {
130
                if (VerificadorUtil.estaNulo(pedido.getCliente()) &&
131
                                VerificadorUtil.estaNuloOuVazio(pedido.getContatoCliente())) {
132
                        throw new NegocioException("Informe o contato do cliente.");
133
                }
134
                if (VerificadorUtil.estaNulo(pedido.getProdutos())) {
135
                        pedido.setProdutos(new ArrayList<PedidoProduto>());
136
                }
137
                if (pedido.getProdutos().isEmpty() && (VerificadorUtil.estaNulo(pedido.getModelo()))) {
138
                        throw new NegocioException("Informe algum produto ou o modelo");
139
                }
140
                if (VerificadorUtil.naoEstaNuloOuVazio(pedido.getProdutos())) {
141
                        if (pedido.getProdutos().size() == 1) {
142
                                Produto primeiroProduto = pedido.getProdutos().get(0).getProduto();
143
                                pedido.setModelo(primeiroProduto.getModelo());
144
                                pedido.setTipoProduto(primeiroProduto.getTipo());
145
                                pedido.setGenero(primeiroProduto.getGenero());
146
                                pedido.setEstiloProduto(primeiroProduto.getEstilo());
147
                                pedido.setCorProduto(primeiroProduto.getCor());
148
                        }
149
                }
150
                if (VerificadorUtil.estaNuloOuVazio(pedido.getTipoSituacao())) {
151
                        pedido.setTipoSituacao(TipoSituacaoPedido.NOVO.getValor());
152
                }
153
        }
154
 
155
        @Override
156
        public List<RankingPedidoDTO> consultarRankingPedidosNaoAtendidos(String generoPedidos, Date dataInicial, Date dataFinal) {
157
                return pedidoRepository.consultarRankingPedidosNaoAtendidos(generoPedidos, dataInicial, dataFinal);
158
        }
159
 
160
        @Override
161
        public List<RankingPedidoDTO> consultarRankingPedidos(String generoPedidos, Date dataInicial, Date dataFinal) {
162
                return pedidoRepository.consultarRankingPedidos(generoPedidos, dataInicial, dataFinal);
163
        }
164
 
165
        @Override
166
        public Integer obterQuantidadePedidosPorSituacao(String tipoPedido, String tipoSituacaoPedido) {
167
                return pedidoRepository.obterQuantidadePedidosPorSituacao(tipoPedido, tipoSituacaoPedido);
168
        }
169
 
170
        @Override
171
        public Integer obterQuantidadePedidosPorSituacaoEePeriodo(String tipoPedido, String tipoSituacaoPedido, Date dataInicial, Date dataFinal) {
172
                return pedidoRepository.obterQuantidadePedidosPorSituacaoEePeriodo(tipoPedido, tipoSituacaoPedido, dataInicial, dataFinal);
173
        }
174
 
175
        @Override
176
        public void excluirHistoricosDoPedido(Pedido pedido) {
177
                pedidoRepository.excluirHistoricosDoPedido(pedido);
178
        }
179
 
180
        @Override
181
        public void solicitarEntrarEmContatoCasoExistaPedidoParaLojaSolicitante(Loja lojaEntrada, Produto produto) {
182
                pedidoRepository.solicitarEntrarEmContatoCasoExistaPedidoParaLojaSolicitante(lojaEntrada, produto);
183
        }
184
 
185
        @Override
186
        public List<PedidoProduto> consultarPedidosNaoAtendidos(Produto produto) {
187
                return pedidoRepository.consultarPedidosNaoAtendidos(produto);
188
        }
189
 
190
        @Override
191
        public List<Pedido> consultarPedidosDoProdutoOuModeloPendentes(Produto produto) {
192
                return pedidoRepository.consultarPedidosDoProdutoOuModeloPendentes(produto);
193
        }
194
 
195
        @Override
196
        public List<Pedido> consultarPedidosDoCliente(Cliente cliente) {
197
                return pedidoRepository.consultarPedidosDoCliente(cliente);
198
        }
199
 
200
        @Override
201
        public Pedido consultarPedidoCompletoDaVenda(Venda venda) {
202
                return pedidoRepository.consultarPedidoCompletoDaVenda(venda);
203
        }
204
 
205
        @Override
206
        public StreamedContent gerarArquivoExcel(ParametrosConsulta<Pedido> parametrosConsulta) {
207
                HSSFWorkbook wb = new HSSFWorkbook();
208
        HSSFSheet aba = ExcelUtil.criarAbas(wb, "PEDIDOS");
209
        ExcelUtil.configurarCabecalho(wb, aba);
210
 
211
        // CONSULTAR
212
        ArrayList<Pedido> pedidos = (ArrayList<Pedido>) pedidoRepository.consultarPassandoParametrosConsulta(parametrosConsulta, 0,
213
                        pedidoRepository.obterQuantidadeDeRegistrosParametrosConsulta(parametrosConsulta), null, null, new HashMap<String, Object>());
214
 
215
        // PREENCHER
216
        Integer numeroLinha = 1;
217
        for (Pedido pedido : pedidos) {
218
                Row linha = aba.createRow(numeroLinha);
219
                ExcelUtil.criarCelula(wb, aba, linha, 0, ExcelUtil.configurarCelulaTexto(wb), pedido.getSequencial().toString());
220
                StringBuilder produtos = new StringBuilder();
221
                for (PedidoProduto pedidoProduto : pedido.getProdutos()) {
222
                        produtos.append(pedidoProduto.getProduto().getDescricaoComModeloCompletaComCodigo());
223
                        produtos.append(", ");
224
                        produtos.append(pedidoProduto.getProduto().getDescricaoDoEstilo());
225
                        produtos.append("; ");
226
                }
227
                ExcelUtil.criarCelula(wb, aba, linha, 1, ExcelUtil.configurarCelulaTexto(wb), produtos.toString());
228
                ExcelUtil.criarCelula(wb, aba, linha, 2, ExcelUtil.configurarCelulaNumerico(wb), pedido.getObservacao());
229
                numeroLinha++;
230
        }
231
 
232
        try {
233
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
234
                wb.write(stream);
235
                stream.close();
236
                wb.close();
237
                System.out.println("Finalizado!");
238
                return new DefaultStreamedContent(ArquivoUtil.gerarInputStreamDeArquivo(stream.toByteArray()), TipoExtensao.EXCEL.getDescricao(), "pedidos.xls");
239
        } catch (FileNotFoundException e) {
240
                e.printStackTrace();
241
        } catch (IOException e) {
242
                e.printStackTrace();
243
        }
244
        return null;
245
        }
246
        */
247
}