Subversion Repositories Integrator Subversion

Rev

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

Rev Author Line No. Line
106 espaco 1
package br.com.ec.domain.service.avaliacao.impl;
2
 
3
import java.io.ByteArrayOutputStream;
4
import java.io.FileNotFoundException;
5
import java.io.IOException;
6
import java.io.InputStream;
7
import java.util.Iterator;
8
import java.util.List;
9
 
10
import javax.faces.context.FacesContext;
11
import javax.servlet.ServletContext;
12
 
13
import org.apache.poi.hssf.usermodel.HSSFSheet;
14
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
15
import org.apache.poi.ss.usermodel.Cell;
16
import org.apache.poi.ss.usermodel.Row;
17
import org.springframework.beans.factory.annotation.Autowired;
18
import org.springframework.stereotype.Service;
19
 
291 espaco 20
import br.com.ec.core.exception.NegocioException;
195 espaco 21
import br.com.ec.core.generic.AbstractService;
22
import br.com.ec.core.generic.GenericRepository;
23
import br.com.ec.core.util.DataUtils;
24
import br.com.ec.core.util.StringUtil;
25
import br.com.ec.core.util.VerificadorUtil;
26
import br.com.ec.core.validador.Validador;
106 espaco 27
import br.com.ec.domain.dto.RankingVendedorDTO;
28
import br.com.ec.domain.model.Avaliacao;
29
import br.com.ec.domain.model.AvaliacaoFuncionario;
30
import br.com.ec.domain.model.Loja;
31
import br.com.ec.domain.model.Pendencia;
32
import br.com.ec.domain.model.Perfil;
33
import br.com.ec.domain.model.Vigencia;
34
import br.com.ec.domain.service.avaliacao.AvaliacaoService;
35
import br.com.ec.domain.service.email.impl.GerenciadorEmailImpl;
36
import br.com.ec.domain.service.pendencia.PendenciaService;
37
import br.com.ec.domain.service.usuario.UsuarioService;
38
import br.com.ec.domain.shared.ConstantesSEC;
39
import br.com.ec.infrastructure.repository.AvaliacaoRepository;
195 espaco 40
import br.com.ec.web.util.DataUtil;
106 espaco 41
 
42
@Service
43
public class AvaliacaoServiceImpl extends AbstractService<Avaliacao> implements AvaliacaoService {
44
 
45
        private AvaliacaoRepository avaliacaoRepository;
46
 
47
        private PendenciaService pendenciaService;
48
        private UsuarioService usuarioService;
49
 
50
        @Autowired
51
        public AvaliacaoServiceImpl(Validador validador, AvaliacaoRepository avaliacaoRepository, PendenciaService pendenciaService,
52
                        UsuarioService usuarioService) {
53
                super(validador);
54
                this.avaliacaoRepository = avaliacaoRepository;
55
                this.pendenciaService = pendenciaService;
56
                this.usuarioService = usuarioService;
57
        }
58
 
59
        @Override
60
        protected GenericRepository<Avaliacao> getRepository() {
61
                return avaliacaoRepository;
62
        }
63
 
64
        @Override
65
        public Avaliacao detalhar(Avaliacao avaliacao) {
66
                return avaliacaoRepository.detalhar(avaliacao);
67
        }
68
 
69
        @Override
70
        public Avaliacao consultarAvaliacaoDaVigencia(Vigencia vigencia) {
71
                return avaliacaoRepository.consultarAvaliacaoDaVigencia(vigencia);
72
        }
73
 
74
        @Override
75
        public List<Avaliacao> consultarAvaliacoesDivulgadas() {
76
                return avaliacaoRepository.consultarAvaliacoesDivulgadas();
77
        }
78
 
79
        @Override
80
        public void solicitarReavaliacao(RankingVendedorDTO rankingVendedor, String solicitacao) {
81
                StringBuilder conteudo = new StringBuilder();
82
                conteudo.append("SOLICITANTE: " + rankingVendedor.getVendedor().getNomeDaPessoa() + "\n");
83
                conteudo.append("DATA DA SOLICITAÇÃO: " + DataUtil.retornarDataFormatadaEmFormatoTexto("dd/MM/yyyy 'às' HH:mm", DataUtils.getDataAtual()) + "\n");
84
                conteudo.append("OBSERVAÇÕES: \n");
85
                conteudo.append(solicitacao);
86
 
87
                Pendencia pendencia = new Pendencia();
88
                pendencia.setDescricao("SOLICITAÇÃO DE REAVALIAÇÃO: " + rankingVendedor.getVendedor().getNomeDaPessoa());
89
                pendencia.setUsuario(usuarioService.consultarUsuarioPorPessoa(rankingVendedor.getVendedor().getPessoa()));
90
                pendencia.setData(DataUtils.getDataAtual());
91
                if (VerificadorUtil.estaNulo(rankingVendedor.getVendedor().getLoja())) {
92
                        pendencia.setLoja(new Loja(ConstantesSEC.SEQUENCIAL_MATRIZ_ESTOQUE_9.longValue()));
93
                } else {
94
                        pendencia.setLoja(rankingVendedor.getVendedor().getLoja());
95
                }
96
                Perfil perfilRh = new Perfil();
97
                perfilRh.setCodigo(ConstantesSEC.PERFIL_RECURSOS_HUMANOS_11);
98
                pendencia.setPerfil(perfilRh);
99
                pendenciaService.cadastrar(pendencia);
100
 
101
                new GerenciadorEmailImpl()
102
                        .comEmailsDestino(ConstantesSEC.DESTINATARIOS_EMAIL_SUPERVISAO)
103
                        .comAssunto("SOLICITAÇÃO DE REAVALIAÇÃO")
104
                        .comConteudo(conteudo.toString())
105
                        .enviar();
106
        }
107
 
108
        @Override
109
        public byte[] emitirRelatorioImportacaoFolhaPagamento(ServletContext contexto, Avaliacao avaliacao) {
110
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
111
 
112
                try {
113
                        String caminhoArquivo = "/arquivos/modelos/Relatório de Importação - Folha de Pagamento Espaço Case.xls";
114
                        InputStream arquivo = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(caminhoArquivo);
115
                        HSSFWorkbook workbook = new HSSFWorkbook(arquivo);
116
                        HSSFSheet sheet = workbook.getSheetAt(0);
117
 
118
                        Iterator rowIterator = sheet.rowIterator();
119
                        while (rowIterator.hasNext()) {
120
                                Row row = (Row) rowIterator.next();
121
                                if (row.getRowNum() < 11) {
122
                                        continue;
291 espaco 123
                                } else {
106 espaco 124
                                        Iterator cellIterator = row.cellIterator();
125
                                        Integer codigoFolha = null;
126
                                        while (cellIterator.hasNext()) {
127
                                                Boolean atualizar = true;
128
                                                Cell cell = (Cell) cellIterator.next();
129
                                                switch (cell.getColumnIndex()) {
130
                                                        case 1:
131
                                                                Integer tipoCelula = cell.getCellType();
132
                                                                if (tipoCelula.equals(Cell.CELL_TYPE_NUMERIC)) {
133
                                                                        Double codigo = cell.getNumericCellValue();
134
                                                                        codigoFolha = codigo.intValue();
135
                                                                } else {
136
                                                                        atualizar = false;
137
                                                                }
138
                                                                break;
139
                                                        case 3:
140
                                                                if (atualizar) {
141
                                                                        for (AvaliacaoFuncionario avaliacaoFunc : avaliacao.getParticipantes()) {
291 espaco 142
                                                                                if (VerificadorUtil.estaNulo(avaliacaoFunc.getFuncionario().getCodigoContabilidade())) {
143
                                                                                        throw new NegocioException("Participante " + avaliacaoFunc.getFuncionario().getNomeDaPessoa() + " sem código contábil cadastrado");
144
                                                                                }
106 espaco 145
                                                                                if (avaliacaoFunc.getFuncionario().getCodigoContabilidade().equals(codigoFolha)) {
291 espaco 146
                                                                                        Double valorComissao = avaliacaoFunc.getValorComissao();
147
                                                                                        if (VerificadorUtil.estaNulo(valorComissao)) {
148
                                                                                                throw new NegocioException("Obrigatório informar todas as comissões");
149
                                                                                        }
150
                                                                                        String valor = StringUtil.formatarValorComDoisDigitos(valorComissao.toString());
106 espaco 151
                                                                                        cell.setCellValue(valor.replace(".", ","));
152
                                                                                        break;
153
                                                                                }
154
                                                                        }
155
                                                                }
156
                                                                break;
157
                                                }
158
                                        }
159
                                }
160
                        }
161
 
162
                        try {
163
                        workbook.write(baos);
164
                        return baos.toByteArray();
165
                } catch (FileNotFoundException e) {
166
                        e.printStackTrace();
167
                } catch (IOException e) {
168
                        e.printStackTrace();
169
                } finally {
170
                                baos.close();
171
                                arquivo.close();
172
                                workbook.close();
173
                        }
174
                } catch (FileNotFoundException e) {
175
                        e.printStackTrace();
291 espaco 176
                } catch (NegocioException ne) {
177
                        throw new NegocioException(ne.getMessage());
106 espaco 178
                } catch (Exception e) {
179
                        e.printStackTrace();
180
                }
181
 
182
        return null;
183
        }
184
 
185
}