Subversion Repositories Integrator Subversion

Rev

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