Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

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